在C#中在服务器上创建COM对象

时间:2012-03-05 12:28:55

标签: c# vb.net com

我需要在服务器上创建一个COM对象。

在VB中你可以这样做:(tutorial

xlApp = CreateObject("Excel.Application", "\\MyServer")

但是如何在C#上做同样的事情?

我知道如何在本地做到这一点:

 var infsrv = new InfoServ.TInfoServerClass();

但不知道如何在服务器上这样做..

3 个答案:

答案 0 :(得分:3)

添加对Microsoft.VisualBasic的引用没有任何问题,因此您可以简单地使用相同的方法。这非常适合.NET,不使用它会浪费。然而,这很简单,只需两行代码:

    public static object CreateObject(string progid, string server) {
        var t = Type.GetTypeFromProgID(progid, server, true);
        return Activator.CreateInstance(t);
    }

好吧,如果你按下它就行了一行。在这种特定情况下,您绝对应该考虑添加对Microsoft.Office.Interop.Excel的引用。然后,您可以简单地使用 new 运算符,获得更快的代码,因为您没有后期绑定获取IntelliSense。如果您想坚持使用后期绑定,请务必使用C#version 4支持 dynamic 关键字。在早期的C#版本中编写后期绑定代码非常痛苦。

答案 1 :(得分:2)

您可以将Microsoft.VisualBasic.dll的引用添加到C#项目中,并直接使用CreateObject。如果您有一个使用大量VB.NET特定功能的现有代码库,这可能是最简单的解决方案:

using Microsoft.VisualBasic;

...

dynamic xlApp = Interaction.CreateObject("Excel.Application", "MyServer");

注意:由于反斜杠是C#中的特殊字符,因此请从服务器名称中删除\\(参见上文)或转义字符串@"\\MyServer"

答案 2 :(得分:1)

使用 Type.GetTypeFromCLSID this overload