我不是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