Comme d'autres ont mentionné, cela ne peut pas exactement être fait dans un initialiseur. Est-il acceptable d'assigner juste null à la propriété au lieu de ne pas le définir du tout? Si oui, vous pouvez utiliser l'approche que d'autres ont souligné. Voici une alternative qui accomplit ce que vous voulez et utilise encore la syntaxe initialiseur:
ServerConnection serverConnection;
if (!windowsAuthentication)
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
Login = user,
Password = password
};
}
else
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
}
À mon avis, il ne devrait pas vraiment beaucoup. Sauf si vous avez affaire à des types anonymes, la syntaxe d'initialisation est juste une fonctionnalité intéressante qui peut rendre votre code plus propre dans certains cas. Je dirais, ne sortez pas de votre façon de l'utiliser pour initialiser toutes vos propriétés si elle sacrifie la lisibilité. Il n'y a rien de mal à faire plutôt le code suivant:
ServerConnection serverConnection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
if (!windowsAuthentication)
{
serverConnection.Login = user,
serverConnection.Password = password
}
Salut, pourquoi la downvote? Cette information est-elle incorrecte? –
Il y a un meilleur moyen, comme @SLaks mentionné ci-dessous –