Rah*_*ain 5 .net vb.net reflection .net-assembly
我有一个DLL程序集,其中有各种类.每个班级有大约50-100名成员和4-5个职能.如何使用VB.NET程序创建所有类及其各自成员的列表?
我需要向用户显示使用特定类执行操作.
ama*_*int 16
假设您已将程序集加载到thisAsm(在此前我使用的是执行程序集),
这将为您提供所有非抽象类:
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList();
Run Code Online (Sandbox Code Playgroud)
这将为您提供实现特定接口的所有类.
(例如.如果你只需要获得实现IYourInterface的类,那么)
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where
(t => ((typeof(IYourInterface).IsAssignableFrom(t)
&& t.IsClass && !t.IsAbstract))).ToList();
Run Code Online (Sandbox Code Playgroud)
获得此项列表后,可以通过在类型列表的每个成员上调用GetProperties()和GetMethods()来显示每种类型的成员.
请参阅System.Reflection.Assembly.GetTypes()和 System.Type.GetMembers()的文档
--larsw