调用C#COM对象

好的,我创建了ac#dll,使其所有接口和方法都是ComVisible(true)。 使用gacutil将其添加到GAC,然后使用regasm注册它并创建类型库tlb文件。

现在我有另一个c#项目,我想调用该com对象,我该怎么做? 导入com对象然后使用其调用的代码大致是什么样的?

首先,你为什么要通过COM在你的另一个C#项目中调用那个C#程序集(你已经可以看到了)? 那不是必要的……

Ontopic:如果你已经创建了一个tlb文件,那么你不应该做任何特殊的事情。 您可以只引用您创建的c#程序集的“运行时可调用包装器”。

第1步:创建一个Runtime-Callable-Wrapper。 有两种方法

方法1:使用TlbImp生成RCW

tlbimp .tlb /out:.dll 

使用这种方式使用默认的.NET-Interop编组,有时(当它不起作用时的意思)你需要通过执行附加步骤来更改编组

 ildasm .dll /out:.il //Modify .il ilasm .il /dll 

方法2:手动创建C ++ / Cli项目作为COM服务器的包装器

第2步:C#代码

参考RCW并使用以下代码连接到COM服务器

 Type yourComType= Type.GetTypeFromProgID(yourComSvrProgID, serverPcName); var oInterface = (IYourCOMInterface)Activator.CreateInstance(yourComType); //Then start using oInterface 

当您的C#组件成为COM限定组件时,它也会像合格的ActiveX组件一样运行。

因此,测试COM调用的一个简单方法是编写一个带有JavaScript代码的简单HTML页面,如下所示:

 Set MyCOMObj = Server.CreateObject("NAME_OF_COM_EXPOSED_CLASS"); MyCOMObj.My_COM_Method(); 

如果你能够在没有任何错误的情况下调用这样的方法,那就意味着你的COM调用工作正常。

感谢致敬
Anugrah Atreya
http://explorecsharp.blogspot.com