name docs comentarios c# properties attributes default-value automatic-properties

c# - comentarios - xml docs



El atributo DefaultValue no funciona con mi propiedad automática (3)

Tengo la siguiente propiedad de auto

[DefaultValue(true)] public bool RetrieveAllInfo { get; set; }

cuando trato de usarlo dentro del código, encuentro que el valor predeterminado es falso porque es false . Supongo que este es el valor predeterminado de una variable bool . ¿Alguien tiene una pista de lo que está mal?


El atributo DefaultValue solo se usa para indicar a los diseñadores de Visual Studio (por ejemplo, cuando diseñan un formulario) cuál es el valor predeterminado de una propiedad. No establece el valor predeterminado real del atributo en el código.

Más información aquí: http://support.microsoft.com/kb/311339


Un truco para esto está en this enlace.

En resumen, llame a esta función al final del constructor.

static public void ApplyDefaultValues(object self) { foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(self)) { DefaultValueAttribute attr = prop.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute; if (attr == null) continue; prop.SetValue(self, attr.Value); } }


[DefaultValue] solo se usa en (por ejemplo) las API de serialización (como XmlSerializer ) y algunos elementos de la interfaz de usuario (como PropertyGrid ). No establece el valor en sí mismo; Debes usar un constructor para eso:

public MyType() { RetrieveAllInfo = true; }

o configure el campo manualmente, es decir, no utilice una propiedad implementada automáticamente:

private bool retrieveAllInfo = true; [DefaultValue(true)] public bool RetrieveAllInfo { get {return retrieveAllInfo; } set {retrieveAllInfo = value; } }