从C#调用旧的OLE组件

时间:2010-08-23 16:52:56

标签: c# dll ole typelib

我有一个非常古老的(VC ++ 5.0)专有DLL,我需要在C#(Visual Studio 2010)中使用它。该示例指定要访问此组件,我需要调用CreateDispatch("application")来指示OLE。

以下是示例代码(C ++):

IComponentServer Server;
Server.CreateDispatch("Component.Server");

我通过Visual Studio向我添加了TLB文件,我可以成功导入其命名空间,但IComponentServer没有任何名为CreateDispatch的方法。

通过C#创建OLE组件实例的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

如果您有CLSID或ProgID,则可以使用以下方法集。

var type = Type.GetTypeFromProgID(progIdString);
var obj = Activator.CreateInstance(type);
var server = (IComponentServer)obj;

答案 1 :(得分:1)

MFC的CreateDispatch基于CLSID或ProgId字符串创建COM对象。您可以直接从C#代码实例化COM对象。

假设Visual Studio引用为您提供 Interop.Component.dll

IComponentServer server = new Interop.Component.ServerClass();