2008-10-15 56 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 
{ 
}