获取特定成员的CustomAttributes

时间:2008-10-15 12:46:18

标签: c# reflection attributes

有没有办法获取我在方法中收到的特定对象的自定义属性?

我不想也不能迭代Type.GetMembers()并搜索我的成员。我有一个对象,它也是一个成员,具有属性。

如何获取属性?

class Custom
{
    [Availability]
    private object MyObject = "Hello";

    private void Do(object o)
    {
        //does object 'o' has any custom attributes of type 'Availability'?
    }

    //somewhere I make the call: Do(MyObject)

}

2 个答案:

答案 0 :(得分:2)

没有。对象没有属性 - 成员可以。当你使用“Do”方法时,没有记录你调用Do(MyObject)vs Do(MyOtherFieldWhichHasTheSameValue)的事实。

如果你需要在一个成员上查找属性,你基本上必须传递相关的MemberInfo,而不是它要评估的内容。

答案 1 :(得分:1)

如果没有至少1次反射调用,则无法执行此操作。之后,以某种方式保存该值。

示例:

abstract MyBase
{
  public string Name;
  protected MyBase()
  {
    //look up value of Name attribute and assign to Name
  } 
}

[Name("Foo")]
class MyClass : MyBase
{
}