2010-05-11 7 views
6

Im guardando un modelo de objeto en XML pero cuando lo vuelvo a cargar obtengo excepciones cuando trato de usar PropertyInfo.SetValue() porque la propiedad no tiene un setter solo un getter.Cómo decir de forma reflexiva si un atributo tiene un Setter público

Quiero guardar las propiedades que solo tienen getters o averiguar en la carga si es válido para mí intentar y establecer un valor o no.

Alguien sabe cómo hacer esto

Saludos

Respuesta

10

Puede utilizar PropertyInfo.GetSetMethod - esto devolverá null si bien la propiedad es de sólo lectura o el colocador es no pública.

if (property.GetSetMethod() != null) 
{ 
    // Yup, you can write to it. 
} 

Si usted puede hacer frente a un regulador no público, se puede utilizar:

if (property.GetSetMethod(true) != null) 
{ 
    // Yup, there's a setter - but it may be private 
} 
+1

conoce una cantidad insondable de cosas. gracias – DrLazer

2

Uso PropertyInfo.CanWrite propiedad.

+2

FYI, esto volverá verdadero incluso para setters no públicos. –

Cuestiones relacionadas