我不是 C# 程序员,如果这是一个愚蠢的问题,请原谅,但我找不到任何解决方案。
我有一个Object
. 它是一个 COM 对象,它ToString()
返回“System.__comObject”。当用调试器检查它的内部内容时,我可以看到这个对象有一个名为的属性Object
,它是我想要的实际类的一个实例。但是,Object
class 没有 property Object
,当我尝试将对象本身转换为所需的类型时,我得到了一个异常。应该如何将 COM 对象转换为 .NET 对象?
我不是 C# 程序员,如果这是一个愚蠢的问题,请原谅,但我找不到任何解决方案。
我有一个Object
. 它是一个 COM 对象,它ToString()
返回“System.__comObject”。当用调试器检查它的内部内容时,我可以看到这个对象有一个名为的属性Object
,它是我想要的实际类的一个实例。但是,Object
class 没有 property Object
,当我尝试将对象本身转换为所需的类型时,我得到了一个异常。应该如何将 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 };
}