리플렉션을 사용하여 주어진 클래스의 속성에 ReadOnly 특성이 설정되어 있는지 확인하려고합니다. 내가 사용하고 클래스는 메타 데이터에 대한 부분 "친구"클래스를 사용하여 (MVC보기 모델이다.C# 버디 클래스/메타 데이터 및 리플렉션
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; }
}
}
I는 "균형"이 읽기 전용 속성이 있는지 확인하고 싶다. 내가 밸런스에 읽기 전용 속성을 설정하는 경우 AccountViewModel의 속성은, 내가 그것을 이런 식으로 검색 할 수 있습니다.?이 메타 데이터 클래스에있는 경우
Type t = typeof(AccountViewModel);
PropertyInfo pi = t.GetProperty("Balance");
bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof(ReadOnlyAttribute);
내가 속성 정보를 검색 할 수 없습니다를 내가 속성이 존재하는지 확인할 수 있습니다 어떻게 메타 데이터 클래스를 정의 내 모든 뷰 모델에 대해 메타 데이터 클래스의 특성을 확인하는 일반적인 방법이 필요합니다.
제안 사항이 있으십니까?
당신이 속성이 존재 함을 확인하고 있음을 조심하지 ... 메타 데이터 유형을 얻을 수
GetCustomAttributes
를 사용뿐만 아니라 이들의 속성을 확인하는'진정한했다입니다 '. 속성이 정의 된 경우'[ReadOnlyAttribute (false)]'가 있으면 어떻게 될지 고려 했습니까? –죄송 합니다만 귀하의 솔루션을 이해하지 못했습니다. :( – Rohit