2010-02-10 15 views

Respuesta

4

No es que yo sepa. Bastante seguro de que su única opción es hacerlo de esta manera:

Request request = new Request 
{ 
    Property1 = something1, 
    Property3 = something3 
}; 
if(something) 
    request.Property2 = someting2; 

O usted podría hacerlo de esta manera si hay un valor por defecto/null se puede establecer que:

Request request = new Request 
{ 
    Property1 = something1, 
    Property2 = something ? someting2 : null, 
    Property3 = something3 
}; 
2

No. se traducen en una secuencia muda de los estados establecidos.

Obviamente, puede hacer hacks para lograr algo similar, como configurar la propiedad a lo que conoce como el valor predeterminado (por ejemplo, new Request { Property2 = (something ? something2 : null) }), pero el setter seguirá recibiendo llamadas, y por supuesto, esto tendrá consecuencias imprevistas si el implementador de Solicitud decide cambiar el valor predeterminado de la propiedad. Así que es mejor evitar este tipo de truco y realizar cualquier inicialización condicional escribiendo enunciados de conjunto explícitos en el antiguo modo anterior al inicializador de objetos.

0

No, ya que los son llamadas estáticas que no se pueden eliminar o agregar en el tiempo de ejecución en función de alguna condición.

Puede cambiar el valor condicional, así:

Foo foo = new Foo { One = "", Two = (true ? "" : "bar"), Three = "" }; 
Cuestiones relacionadas