2011-01-28 14 views
48

Quiero hacer esto:Propiedades de C#: cómo usar una propiedad de conjunto personalizado sin campo privado?

public Name 
{ 
    get; 
    set 
    { 
     dosomething(); 
     ??? = value 
    } 
} 

¿Es posible usar el campo privada generada automáticamente?
O es necesario que implemento de esta manera:

private string name; 
public string Name 
{ 
    get 
    { 
     return name; 
    } 
    set 
    { 
     dosomething(); 
     name = value 
    } 
} 
+1

Hay un montón de buena discusión sobre esto en este SO pregunta: http://stackoverflow.com/questions/1277018/c-3-0-automatic- properties-what-would-be-name-of-private-variable-create –

Respuesta

60

Una vez que quiera hacer algo personalizado en el getter o en el setter, ya no podrá usar propiedades automáticas.

13

Esto no es posible. O propiedades auto implementadas o código personalizado.

3

Es necesario implementarlo por completo dado su escenario. Ambos get y set deben implementarse automáticamente o implementarse completamente juntos, no una combinación de los dos.

14

Usted puede intentar algo como esto:

public string Name { get; private set; } 
public void SetName(string value) 
{ 
    DoSomething(); 
    this.Name = value; 
} 
+4

+1 En mi opinión, esta respuesta reprende la respuesta aceptada. Está usando propiedades automáticas. Establece explícitamente setter en privado. Esto es bueno porque le permite al usuario final o al desarrollador saber que probablemente haya más cosas detrás del método setter. – ooXei1sh

Cuestiones relacionadas