我想公開.NET類到COM。 做法很簡單:公開.NET類(它有事件)到COM
- 我創造,我定義的類成員的接口應該是標記有ComVisible特性
- 我定義這些成員的DISPID的自己
- 我定義的接口應該是
ComVisible
- 我分配一個
Guid
該接口 - 我創建一個實現了該接口
沒什麼大不了的。這一切都有效。 但是,現在我的問題是:我在這個類中有一些事件,我也想暴露給COM。
這也不算什麼大問題,但是,當我看一些例子(由MS的ComInterop工具生成的f.i.代碼)時,我發現事件是在一個單獨的接口中聲明的。 即:應該是ComVisible
類,實現了2個接口:
ComVisible
ComVisible
事件另一個接口
- 一個接口。
現在,我的問題是:爲什麼呢?這是什麼原因?
爲什麼在另一個接口中定義了ComVisible
事件,爲什麼它們只是在包含應該是ComVisible
的方法和屬性的接口中沒有定義?
這是什麼原因?
好的,我可以理解你在說什麼,但是,當我沒有通過com在另一個接口中定義它們時,爲什麼這些事件不是真正可見的? 它與ComInterfaceType屬性有關嗎? –
它與ComSourceInterfaces屬性有關。儘管.NET可以將.NET事件轉換爲COM事件,但它仍然要求您以這種方式安排代碼,以便清楚如何在COM端進行排序。 ComSourceInterfaces屬性指示.NET,它所綁定的類可以使用給定的接口發送事件。 –