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

我有一个Object。这是一个COM对象,其ToString()返回“ System .__ comObject”。使用调试器检查其内部内容时,我可以看到该对象具有名为Object的属性,并且它是我想要的实际类的实例。但是,Object类没有属性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 };
}

09-27 18:21