我不是C#程序员,所以如果这是一个愚蠢的问题,但我找不到任何解决方案。我有一个Object
。这是一个COM对象,它的ToString()
返回“System .__ comObject”。当用调试器检查其内容时,我可以看到这个对象有一个名为Object
的属性,它是我想要的实际类的一个实例。然而,Object
类没有属性Object
,当我试图将对象本身转换为所需的类型时,我得到一个异常。如何将COM对象转换为.NET对象?将泛型COM对象强制转换为特定的.NET类
2
A
回答
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 };
}
+0
这工作,非常感谢!我可以在没有独立方法的情况下使其在线工作吗? –
+0
@VioletGiraffe当然可以。只需投射到“动态”,例如'MyObject myObj =((dynamic)comObject).Object;',或从头开始将'comObject'声明为'dynamic':'dynamic comObject = SomeCom.GetObject(); comObject.Object.DoSomething();'。 –
相关问题
- 1. 将泛型类型转换为对象
- 2. 将对象[]转换为特定类型
- 3. 强制转换为特定类型
- 4. PowerShell:如何将COM对象转换为.NET互操作类型?
- 5. C#强制类型转换为泛型强类型
- 6. 将泛型对象转换为泛型类
- 7. 使用泛型将类型对象类型转换为泛型类型
- 8. 强制.NET类型实例化为COM
- 9. 如何泛型类型强制转换成非泛型类型
- 10. 如何将COM对象类型转换为Excel.Checkbox类型
- 11. 强制转换对象类型在Java
- 12. 如何将管理对象强制转换为COM接口?
- 13. 如何将对象转换为泛型?
- 14. 如何将对象转换为泛型?
- 15. 将类型的泛型容器强制转换为继承类型的容器?
- 16. 错误:无法将类型为'MSScriptControl.ScriptControlClass'的COM对象转换为接口类型为'MSScriptControl.IScriptControl'的COM对象
- 17. 将发件人强制转换为发件人对象类型?
- 18. 在泛型类型未知时将对象转换为泛型类
- 19. 在泛型类中将字符串强制转换为数字
- 20. 将COM对象转换为C#/ .NET类时遇到问题
- 21. 将强类型对象转换为匿名类型
- 22. 无法将类型为'CommunicatorAPI.MessengerClass'的COM对象转换为接口类型为'CommunicatorAPI.IMessengerAdvanced'
- 23. 将泛型数组转换为特定类型
- 24. 将对象转换为泛型类型 - automapper静态扩展
- 25. 将对象数组转换为泛型类型
- 26. 如何将字符串转换为泛型类型对象
- 27. 如何将对象实例转换为泛型类型?
- 28. 将NSString强制转换为UIButton类型
- 29. 将Newtonsoft.Json.Linq.JArray转换为特定对象类型的列表
- 30. 将EF DBquery强制转换为Viewmodel - 无法强制转换类型为'System.Data.Entity.Infrastructure.DbQuery的对象
你不能,你最好能do将其转换为与对象实现的其中一个COM接口相匹配的接口 – Mgetz
@Mgetz:如何找到它实现的接口? –
您的问题似乎表明您有权访问本机代码,如果是这种情况,您可以查看本机声明的对象。但是,如果你能,我会强烈建议使用[Tlbimp创建一个.NET库来为你做互操作。](http://msdn.microsoft.com/en-us/library/z6tx9dw3.aspx) – Mgetz