Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取com dll中的所有类_C#_Reflection_Com_Tlbinf32 - Fatal编程技术网

C# 获取com 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

我有一个用vb6编写的com dll。我需要编写c#代码,以获得其中所有类的列表

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

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

总结:
如何获取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);