.NET Attributes on Property



如果我有:

[SomeAttr]
public Int32 SomeProperty
{
  get; set;
}

SomeAttr是否有可能告诉它所附加的属性?至少有可能知道Typeproperty是什么吗?

No。你只能反过来做。您可以查询属性(通过反射)它具有哪些属性:

属性。GetCustomAttributes(道具,真);

其中prop是从描述属性SomeProperty的MemberInfo类派生出来的对象。接下来,遍历返回的属性,看看它是否包含您的属性。

不行。没有直接。

在收集属性的那一刻,你能做的就是用额外的信息设置该属性:

class SomeAttr: Attribute
{
    public PropertyInfo Target {get;set;}
}

…当你收集好信息后:

Type type = ... // The type which holds the property.
PropertyInfo propertyInfo = typeo.GetProperty("SomeProperty");
Type propertyType = propertyInfo.PropertyType;
SomeAttr attr = propertyInfo.GetCustomAttributes(false).OfType<SomeAttr>().FirstOrDefault();
attr.Target = propertyInfo; // <== Set the target information.
这样,您就可以在代码的另一点检索它的目标成员:
public void DoSomethingWithAttribute(SomeAttr attr)
{
    PropertyInfo whichProperty = attr.Target;
}

(也可以使用基类MemberInfo来支持方法、字段等)

相关内容

  • 没有找到相关文章

最新更新