2008-10-15 31 views
1

有什么方法可以获取我在方法中接收的特定对象的自定义属性?获取特定成员的CustomAttributes

我不希望也无法遍历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

号的对象没有属性 - 成员做。当你进入“Do”方法时,没有记录你称为Do(MyObject)vs Do(MyOtherFieldWhichHasTheSameValue)的事实。

如果您需要查看成员的属性,您基本上必须传递相关的MemberInfo,而不是传递给它的结果。

+0

我想到了这一点,但也希望有一个聪明的方式来获得属性,仍然。谢谢。 – 2008-10-15 13:11:36

1

如果没有至少1次反射调用,则无法做到这一点。之后,以某种方式保存该值。

实施例:

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

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