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



我有一个带有静态成员的类。我想获取其类在命名空间"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));

这给了我一个成员信息列表,但我想要项目本身。

所以我可以为每个项目与另一个项目进行比较。

我认为这可以解决问题。可能有一些错别字,我无法测试

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)

最新更新