获取com dll中的所有课程

时间:2015-04-15 08:02:37

标签: c# reflection com tlbinf32

我有一个用vb6编写的com。我需要编写c#代码,它会为我提供其中所有类的列表。

我的目标是获取类并使用所有属性在.net中生成类,并创建一个映射类。

我只需要从dll获取一个类列表。

要点: 如何获得我的com dll中所有类的列表?

2 个答案:

答案 0 :(得分:2)

使用反射来为您的COM DLL移动Interop将为您提供类似于COM CoClasses和接口的类和接口。

如果您快速而简单,那么在Visual Studio中添加COM DLL作为参考,并使用下面的代码遍历Interop程序集以查找类。如果它是一个VB6 COM DLL,那么一切都将是IDispatch,但你可以选择过滤下面标识的类型上具有CoClass,Guid或InterfaceType属性的对象(你没有指定你是否在课后或CoClasses)。

var classes = Assembly.GetAssembly(typeof(MyComDLL.RandomTypeFromWithin))
    .GetTypes()
    .Where(type => type.IsClass);

如果您正在尝试真正做到这一点,Dennis在评论中链接的文章会更好,就像调用LoadTypeLib和走ITypeLib(后一个选项是非平凡的)一样。

答案 1 :(得分:2)

我建议使用TLBINF32.dll。它是大多数Windows版本附带的COM组件。确保使用regsvr32.exe从提升的命令提示符(以及COM dll)注册它。在.NET应用程序中引用它(编译为x86)并使用TLIApplication.TypeLibInfoFromFile方法。从那里,您可以遍历COM组件的类型库,并获取暴露的类,方法,接口和属性。

我们将此库用于各种实用程序。