2012-01-17 50 views
0

沿着檢索屬性值創建一個自定義屬性,我用我的類MyClass的。我希望能夠反思這個類的實例以查看來自該屬性的信息。我已經如何與運行時屬性值

比方說,我有這個類的定義:

public class MyClass 
{ 
    [Example("MyClassID")] 
    public string ID; 
} 

在我的代碼之後,我使用這個類的一個實例:

MyClass mc = new MyClass(); 
mc.ID = 18; 

有沒有一種方法可以讓我得到的屬性值(「MyClassID」),mc?理想情況下,我希望能夠配合這我的財產,在一個類似的方式:

mc.ID.GetCustomAttributes(typeof(ExampleAttribute), false) 

回答

1

是的,你可以通過反射做到這一點:

this.GetType().GetProperty("ID").GetCustomAttributes(typeof(ExampleAttribute)) 

如果不是一個屬性(它是不是在你的榜樣,但我不知道如果是這樣的問題或沒有的功能),那麼你可以使用GetMember。

+0

這是偉大的。是否有更強大的類型的方式來獲得ID屬性?編譯時支持將會是驚人的(我知道這似乎是一個使用反射的不切實際的請求)。 – YeahStu 2012-01-17 21:05:46

+0

不幸的是,還沒有一個更強類型的方式,我在這一點上知道的。 – 2012-01-17 21:09:56

0

是的,你可以得到屬性值。這裏有一個例子:

Type t = this.GetType(); 
var id = t.GetProperty("ID"); 
var attribute = id.GetCustomAttributes(typeof(ExampleAttribute), false).FirstOrDefault(); 
if (attribute != null) 
{ 
     ExampleAttribute item = attribute as ExampleAttribute; 
     //Do stuff with the attribute 
} 
相關問題