Estoy tratando de usar la reflexión para verificar si las propiedades en una clase dada tienen un atributo ReadOnly establecido. Las clases que estoy usando son MVC Visualización de modelos (usando una clase parcial "amigo" de los metadatos.C# Buddy Classes/Metadatos y reflexión
public partial class AccountViewModel
{
public virtual Int32 ID { get; set; }
public virtual decimal Balance { get; set; }
}
[MetadataType(typeof(AccountViewModelMetaData))]
public partial class AccountViewModel
{
class AccountViewModelMetaData
{
[DisplayName("ID")]
public virtual Int32 ID { get; set; }
[DisplayName("Balance")]
[DataType(DataType.Currency)]
[ReadOnly(true)]
public virtual decimal Balance { get; set; }
}
}
Quiero comprobar si el "equilibrio" tiene la propiedad de sólo lectura. Si puedo configurar el atributo de sólo lectura en la balanza propiedad de AccountViewModel, i puede recuperar de esta manera:.?
Type t = typeof(AccountViewModel);
PropertyInfo pi = t.GetProperty("Balance");
bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof(ReadOnlyAttribute);
que no puede recuperar la información de atributo si está en la clase de metadatos ¿Cómo puedo comprobar si existe el atributo he definido clases de metadatos para todos mis modelos de vista, y necesito una forma genérica para verificar los atributos en las clases de metadatos.
¿Alguna sugerencia?
Mira que está comprobando que existe el atributo y no es que se define ha 'verdadera '. ¿Ha considerado lo que sucede si la propiedad está definida tiene '[ReadOnlyAttribute (false)]'? –
Lo siento, pero no pude entender su solución. :( – Rohit