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

3
我有一个带有静态成员的类。 我想要获取所有其所在命名空间为“foo”,并继承自类“bar”的静态成员列表。
类似于list x= typeof(this).staticmembers.where(namespace == "foo"); 尝试1:
 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));

这会给我一个成员信息列表,但我想要项本身。
这样我就可以对每个项进行比较。

你想获取命名空间中所有静态的 Type,对吗?而不是在命名空间中定义的任何 Type 的所有静态成员? - CodingGorilla
我认为静态类型不能继承其他类型,所以他可能想要这些类型的静态成员。 - Ivo
1个回答

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)

这让我走上了正确的轨道。但是我似乎无法获取成员本身,只能获取成员信息。你能帮忙吗? - Nahum
Memberinfos是成员的表示。你实际上需要什么?你所说的“成员本身”是什么意思? - Ivo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接