【发布时间】:2010-03-02 16:10:06
【问题描述】:
我正在尝试使用反射来检查给定类的属性是否具有 ReadOnly 属性集。我使用的类是 MVC 视图模型(对元数据使用部分“伙伴”类。
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; }
}
}
我想检查“Balance”是否具有 ReadOnly 属性。如果我在 AccountViewModel 的 Balance 属性上设置 ReadOnly 属性,我可以这样检索它:
Type t = typeof(AccountViewModel);
PropertyInfo pi = t.GetProperty("Balance");
bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof( ReadOnlyAttribute);
如果属性信息在元数据类上,我无法检索它。如何检查属性是否存在?我为我的所有视图模型定义了元数据类,并且需要一种通用的方法来检查元数据类的属性。
有什么建议吗?
【问题讨论】:
标签: c# .net reflection attributes