Как уже упоминалось, это не может быть сделано в инициализаторе.Допустимо ли присваивать свойству значение null, а не устанавливать его вообще?Если это так, вы можете использовать подход, который указали другие.Вот альтернатива, которая выполняет то, что вы хотите, и все еще использует синтаксис инициализатора:
ServerConnection serverConnection;
if (!windowsAuthentication)
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
Login = user,
Password = password
};
}
else
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
}
На мой взгляд, это не должно иметь большого значения.Если вы не имеете дело с анонимными типами, синтаксис инициализатора просто полезен, если в некоторых случаях ваш код выглядит более аккуратным.Я бы сказал, не пытайтесь использовать его для инициализации всех ваших свойств, если он жертвует читабельностью.Нет ничего плохого в выполнении следующего кода:
ServerConnection serverConnection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
if (!windowsAuthentication)
{
serverConnection.Login = user,
serverConnection.Password = password
}