-
29-08-2019 - |
题
我DLL会,其中有各种类。每一类中约有50至100名成员和4-5职能。我怎么可以创建一个列表中的所有课程和它们各自的成员使用VB.NET 计划?
我需要表现出来的用于执行用户的操作使用一个特别类。
解决方案
请参阅用于 System.Reflection.Assembly的文档.GetTypes()和 System.Type.GetMembers()
- larsw
其他提示
假设你已经在自己的组件加载到thisAsm(在此恩我使用执行的程序集),
这将让你的所有非抽象类:
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList();
这将让你实现特定接口的所有类。
(例如,如果你需要得到的只是实现IYourInterface的类,然后)
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where
(t => ((typeof(IYourInterface).IsAssignableFrom(t)
&& t.IsClass && !t.IsAbstract))).ToList();
一旦你的产品这个列表中,可以由类型列表的每个成员上调用的GetProperties()和的getMethods()示出每种类型的成员。
你可以得到所有类型的继承 形式 在VB.net:
Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm.GetTypes().Where(Function(t) t.BaseType = GetType(Form)).ToList()
下面是基于@amazedsaint答案vb.net版本:
Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
.GetTypes()
.Where(Function(t) t.IsClass AndAlso Not t.IsAbstract).ToList()
Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
.GetTypes()
.Where(Function(t) ((GetType(IYourInterface).IsAssignableFrom(t) AndAlso t.IsClass AndAlso Not t.IsAbstract))).ToList()
不隶属于 StackOverflow