2012-06-13 51 views
3

我有一個靜態成員的類。 我想所有的靜態成員,他們的類被命名空間「foo」的定義和類別「欄」獲取名稱空間的所有靜態成員

list x= typeof(this).staticmembers.where(namespace == "foo");

TRY1繼承列表:

var AllowedTypes = GetType().Assembly.GetTypes() 
     .Where(x => x.Namespace == "XX.XXX.XXX") 
     .Where(x => x.IsAssignableFrom(typeof(UserControl))); 

    var StaticMembersOfAllowedTypes = typeof(MainWindowXX).GetMembers (System.Reflection.BindingFlags.Static).Where(item => AllowedTypes.Contains(item)); 

這給了我一個成員信息列表,但我想要項目本身。

所以我可以做foreach項目比較另一個項目。

+0

你要得到所有的靜態'Type'的命名空間中的吧?並不是所有在命名空間中定義的'Type'的靜態成員? – CodingGorilla

+0

我相信靜態類型不能從其他類型繼承,所以他可能需要那些類型爲 – ivowiblo

回答

4

我認爲這會做到這一點。這是可能有一些拼寫錯誤,我無法測試它

var list x = GetType().Assembly.GetTypes() 
        .Where(x => x.Namespace == "foo" && typeof(bar).IsAssignableFrom(x)) 
        .SelectMany(x => x.GetMembers(BindingFlags.Static)); 

您可能需要添加BindingFlags.Public

x.GetMembers(BindingFlags.Static | BindingFlags.Public) 
+0

的靜態成員,這些成員使我處於正確的軌道。但我似乎沒有得到成員本身,只有成員資格。你能幫忙嗎 – Nahum

+0

Memberinfos是會員的代表。你實際需要什麼? 「會員自己」是什麼意思? – ivowiblo

相關問題