2012-06-13 116 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

相关问题