将通用COM对象转换为特定的.NET类

时间:2013-10-07 14:11:15

标签: c# com casting type-conversion

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

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

1 个答案:

答案 0 :(得分:3)

如果你知道自己喜欢什么类型,可以设置一种方法来自行转换,使用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 };
}