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