我试图找出使用C#.NET与OLE服务器进行交互的最佳方法

我发现了一些可以与COM +进行交互的代码,该代码似乎适用于OLE服务器,但是我想知道是否有更优雅或更简单的方法?

我要求迟到。

代码(从网上其他地方窃取)

// Code start
Type excel;
object[] parameter = new object[1];
object excelObject;
try
{
    //Get the excel object
    excel = Type.GetTypeFromProgID("Excel.Application");

    //Create instance of excel
    excelObject = Activator.CreateInstance(excel);

    //Set the parameter whic u want to set
    parameter[0] = true;


    //Set the Visible property
    excel.InvokeMember("Visible", BindingFlags.SetProperty, null, excelObject, parameter);


显然,在我的情况下,我将ole服务器的名称放在Excel.Application所在的位置,但是我看到了在EARLY绑定中的情况,您可以直接从对象中调用该函数,而不必通过“ InvokeMember”

这可能吗?我可以使用Type强制转换为我的类型吗?

谢谢。

最佳答案

如果使用的是.NET 4.0,则可以使用dynamic代替object并像调用成员一样调用成员。然后将在运行时检查它,如果名称正确,则执行它。

//Get the excel object
var excel = Type.GetTypeFromProgID("Excel.Application");

//Create instance of excel
dynamic excelObject = Activator.CreateInstance(excel);
excelObject.Visible = true;

关于c# - C#Com OLE服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7527114/

10-15 03:13