获取命名空间的所有静态成员

时间:2012-06-13 15:00:22

标签: c# reflection

我有一个静态成员的班级。 我想得到一个列表,列出在类名称空间中定义类的所有静态成员" foo"并继承自班级" bar"

类似于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项目与另一项目进行比较。

1 个答案:

答案 0 :(得分: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)