将泛型 COM 对象强制转换为特定的 .NET 类

本文关键字:NET 转换 COM 泛型 对象 | 更新日期: 2023-09-27 18:34:10

我不是C#程序员,所以如果这是一个愚蠢的问题,请原谅我,但我找不到任何解决方案。

我有一个Object.它是一个 COM 对象,其ToString()返回"System.__comObject"。使用调试器检查其内部内容时,我可以看到此对象具有一个名为 Object 的属性,它是我想要的实际类的实例。但是,Object类没有属性Object,当我尝试将对象本身转换为所需的类型时,我得到一个异常。应如何将 COM 对象转换为 .NET 对象?

将泛型 COM 对象强制转换为特定的 .NET 类

如果你知道你想要它是什么类型,你可以设置一个方法来自己转换它,使用 dynamic 访问属性:

public static MyObject ConvertFromComObject(dynamic comObject)
{
    return comObject.Object;
}
// or, if that doesn't work:
public static MyObject ConvertFromComObject(dynamic comObject)
{
    return new MyObject { MyProperty = comObject.Object.MyProperty };
}
// or maybe
public static MyObject ConvertFromComObject(dynamic comObject)
{
    return new MyObject { MyProperty = comObject.MyProperty };
}