【发布时间】:2014-01-17 01:53:01
【问题描述】:
我有一个这样的自定义属性:
public class PropertyInfoAttribute : Attribute
{
public bool IsAutoComplete { get; set; }
}
还有这样一个类:
public class Article
{
public virtual int Order { get; set; }
//other properties
}
在另一个继承自 Article 的类中,我重写 Order 属性并为其声明属性,如下所示:
public class ArticleDetails : Article
{
[PropertyInfo(IsAutoCompele = true)]
public override int Order { get; set; }
}
当我想通过 PropertyInfo 类中的 GetCustomAttributes 方法获取属性时出现问题。我是这样做的:
PropertyInfo propInfo = //do something for getting property info from the
//ArticleDetails class;
var attr = propInfo.GetCustomAttribute<PropertyInfoAttribute>();
但它什么也没返回!不知道为什么!
更新:
我通过这种方法获取属性信息:
public static void InitPropertyInfoAttribute<TModel, TProperty>(MvcHtmlString source, Expression<Func<TModel, TProperty>> expression)
{
PropertyInfo propInfo = (expression.Body as MemberExpression).Member as PropertyInfo;
}
【问题讨论】:
-
能否附上获取
propInfo的代码?您需要从Order属性而不是ArticleDetails类本身获取信息。 -
@GaneshSittampalam 我已经更新了,谢谢
-
我认为您需要将其缩减为直接获取属性的内容。我怀疑您上面的代码最终会有所不同。
标签: c# inheritance overriding custom-attributes system.reflection