我有一个用 vb6 编写的 com dll。我需要编写 c# 代码来获取其中所有类的列表。
我的目标是获取类并在 .net 中生成具有所有属性的类并创建一个映射类。
我只需要从 dll 中获取类列表。
摘要:如何获取 com dll 中所有类的列表?
我有一个用 vb6 编写的 com dll。我需要编写 c# 代码来获取其中所有类的列表。
我的目标是获取类并在 .net 中生成具有所有属性的类并创建一个映射类。
我只需要从 dll 中获取类列表。
摘要:如何获取 com dll 中所有类的列表?
使用反射来遍历 COM DLL 的 Interop 将为您提供类和接口,这些类和接口与 COM CoClasses 和接口大致相似。
如果您追求的是快速和简单,请将您的 COM DLL 添加为 Visual Studio 中的参考,并使用下面的代码遍历 Interop 程序集以查找类。如果它是一个 VB6 COM DLL,那么无论如何,一切都将是 IDispatch,但您可以选择在下面确定的类型上过滤具有 CoClass、Guid 或 InterfaceType 属性的对象(您没有指定您是在类还是 CoClasses 之后)。
var classes = Assembly.GetAssembly(typeof(MyComDLL.RandomTypeFromWithin))
.GetTypes()
.Where(type => type.IsClass);
如果你真的想正确地做到这一点,丹尼斯在他的评论中链接的文章会更好,p/Invoke'ing LoadTypeLib 和walking ITypeLib (后一个选项很重要)也是如此。
我建议使用TLBINF32.dll
. 它是大多数版本的 Windows 附带的 COM 组件。确保它是使用regsvr32.exe
提升的命令提示符注册的(连同您的 COM dll)。在您的 .NET 应用程序(编译为 x86)中引用它并使用该TLIApplication.TypeLibInfoFromFile
方法。从那里您可以遍历 COM 组件的类型库并获取公开的类、方法、接口和属性。
我们将此库用于各种实用程序。