C# 获取com dll中的所有类
我有一个用vb6编写的com dll。我需要编写c#代码,以获得其中所有类的列表 我的目标是获取类并在.net中生成具有所有属性的类,并创建一个映射类 我只需要从dll中获取一个类列表 总结:C# 获取com dll中的所有类,c#,reflection,com,tlbinf32,C#,Reflection,Com,Tlbinf32,我有一个用vb6编写的com dll。我需要编写c#代码,以获得其中所有类的列表 我的目标是获取类并在.net中生成具有所有属性的类,并创建一个映射类 我只需要从dll中获取一个类列表 总结: 如何获取com dll中所有类的列表?使用反射遍历com dll的互操作将为您提供与com类和接口近似的类和接口 如果您所追求的是快速和简单,请在VisualStudio中添加您的COM DLL作为引用,并使用下面的代码遍历互操作程序集以查找类。如果它是VB6 COM DLL,那么一切都将是IDispat
如何获取com dll中所有类的列表?使用反射遍历com dll的互操作将为您提供与com类和接口近似的类和接口 如果您所追求的是快速和简单,请在VisualStudio中添加您的COM DLL作为引用,并使用下面的代码遍历互操作程序集以查找类。如果它是VB6 COM DLL,那么一切都将是IDispatch,但您可以选择在以下标识的类型上筛选具有CoClass、Guid或InterfaceType属性的对象(您没有指定是在类之后还是在CoClass之后)
如果你真的想做到这一点,丹尼斯在评论中链接到的文章会更好,p/Invoke'ing LoadTypeLib和walking itTypelib(后一个选项非常重要)。我建议使用
TLBINF32.dll
。它是大多数Windows版本附带的COM组件。确保它是使用提升的命令提示符(以及COM dll)中的regsvr32.exe
注册的。在.NET应用程序(编译为x86)中引用它,并使用tliaapplication.TypeLibInfoFromFile
方法。从那里,您可以遍历COM组件的类型库,并获得公开的类、方法、接口和属性
我们将此库用于各种实用程序。如果由于某种原因无法使用VS中的开箱即用功能,则此:和此:将非常有用。此库似乎在Windows 10中不再可用。是否有其他方法来实现此类功能;例如,通过使用Windows API?最新版本适用于Windows 10。我们使用它作为构建过程的一部分。我不知道会有什么许可限制,但就原始功能而言,它可以正常工作。
var classes = Assembly.GetAssembly(typeof(MyComDLL.RandomTypeFromWithin))
.GetTypes()
.Where(type => type.IsClass);