我試圖做一種代理,我想知道COM方法和屬性是靜態的還是動態的。換句話說,.NET是否調用com對象並告訴它要執行哪個方法,然後讓com對象假裝它已經執行了它(DynamicObject允許你在.NET中執行的方式,只是在沒有做任何事情的情況下爲TryInvokeMember返回true ),還是.NET實際去直接調用COM方法(靜態)?COM對象是動態還是靜態的
回答
這聽起來像你問之間的區別早期綁定(靜態)和後期綁定(動態)。 C#同時支持。
早期綁定需要使用類似TlbImp.exe這樣的工具來創建Interop程序集,以便爲直接調用接口方法的COM對象生成代理。
要使用後期綁定,可以使用反射(雜亂)或dynamic
關鍵字在運行時綁定方法調用。
但是,COM對象不會「僞裝」它執行了一個你要求的方法 - 如果該方法不存在,你將得到一個運行時異常。
'Activator.CreateInstance'會遲到嗎? COM對象是否也可以僞裝該方法?或者.NET以某種方式使它做什麼? –
如果你通過它們的字符串名稱調用方法,那麼是的,那將是遲到的綁定。 COM對象可以忽略對缺少方法的調用嗎?沒有一個在C#中創建。你必須在C++中手動實現IDispatch,這會很痛苦。你想達到什麼目的? –
我想弄清楚如何製作一個DynamicObject COM對象,但現在我可以告訴我在吠叫錯誤的樹。我對COM也不是很瞭解,所以我也想弄明白。我會問另一個問題。 –
- 1. SASS是動態的還是靜態的?
- 2. 是t1靜態還是非靜態?
- 3. 如何判斷我是靜態對象還是對象?
- 4. 模板:靜態類型還是動態?
- 5. 「公共靜態」還是「靜態公共」?
- 6. Android Sqllite db本質上是靜態的還是動態的?
- 7. 這個數組是靜態的還是動態的?
- 8. Apple的iOS框架是動態還是靜態鏈接?
- 9. Java中的類是靜態還是非靜態?
- 10. 靜態還是在C#
- 11. C#動態和COM對象
- 12. 虛擬方法是指動態還是靜態類型?
- 13. 檢測公有IP地址是動態還是靜態
- 14. C標準庫是靜態庫還是動態庫?
- 15. 8080是動態端口還是靜態端口?
- 16. Javascript是動態還是靜態鏈接到html?
- 17. 當引發異常時,是靜態對象還是本地對象?
- 18. 使用「最終靜態」還是「靜態最終」是否正確?
- 19. 使用靜態還是非靜態是一個好主意? (Android)
- 20. 知道.lib是靜態還是導入
- 21. 是IoC容器單身還是靜態?
- 22. 這是動態類還是...?
- 23. 靜態正則表達式對象還是重要?
- 24. 使用同步(鎖定)時,鎖定對象最好是靜態的還是非靜態的?
- 25. uiscrollview中的靜態和動態對象
- 26. 我是否需要處理靜態對象內定義的非靜態對象?
- 27. 我應該聲明我的對象是全局的還是靜態的?
- 28. 反正靜態成員是可移動的還是固定的?
- 29. 模型的泛型超類應該是靜態還是單態?
- 30. Java的android優化。非靜態還是靜態方法?
你能否澄清一下「com對象假裝它已經執行了它(動態)」? –
@Alexei:他問的是,方法綁定是由編譯器完成的(靜態綁定)還是對象本身解析綁定 - 就像[DynamicObject](http://msdn.microsoft.com/zh-cn/ us/library/system.dynamic.dynamicobject.aspx)/ ['IDynamicMetaObjectProvider'](http://msdn.microsoft.com/en-us/library/system.dynamic.idynamicmetaobjectprovider.aspx)它可以假裝有任何方法。 –