我有一个静态成员的班级。 我想得到一个列表,列出在类名称空间中定义类的所有静态成员" 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项目与另一项目进行比较。
答案 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)