识别所有类型的一些属性
-
25-09-2019 - |
题
我有净反射的问题。这个概念是相当新的给我,我与一些测试用例探索它,看看什么可行,什么不可行。我构造的实例,其中我填充一组菜单动态通过我的类型属性扫描。
基本上,我想找到我的主命名空间每种类型的声明“SomeAttribute”(不不管它是什么,它没有任何成员目前)。我所做的是:
For Each itemtype As Type In Reflection.Assembly.GetExecutingAssembly().GetTypes
If itemtype.IsDefined(Type.GetType("SomeAttribute"), False) Then
'do something with the type
End If
Next
此崩溃在启动应用程序 - 它标识了第一类是所有MyApplication这是相当明显不是我想要的。是否有一个正确和恰当的方式来看待所有的“真实”“明智”的类型 - 我已经定义,即类 - 当前组件中的
解决方案
它是最有可能因为IsDefined()
返回空那Type.GetType("SomeAttribute")
失败。尝试添加命名空间属性名称:
Type.GetType("SomeNamespace.SomeAttribute")
其他提示
如何一点LINQ的
var list = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).
Where(x => x.GetCustomAttributes(typeof(MyAttribute), false).Length > 0);
不隶属于 StackOverflow