2012-08-26 113 views
1

我與CDO COM DLL工作處理.eml文件。當我嘗試實例化MessengerClass類時,VC#2010告訴我必須使用接口實例化,例如COM接口實例C#

CDO.Message msg = new CDO.Message(); 

代替

CDO.Message msg = new CDO.MessageClass(); 

怎麼能這樣呢?不會從這個實例中丟失所有的功能嗎? This article說,做同樣的事情。 我錯過了什麼?界面是否仍然包含可用的功能?

+1

這是COM。普通規則不適用。 – SLaks

+0

@SLake即是有幫助的洛爾。 – Nate

回答

1

編譯器編譯new COMInterface()成查找實現該接口的COM類實際COM代碼。

據我所知,COM接口不具有多種實現;相反,在運行時加載從相應的DLL在HKCR \ {類的GUID }規定的實施。
(我不知道很多有關COM,所以這可能是不準確的。

+0

這確實解釋了一些事情。 – Nate

1

的CDO.Message類根據MSDN

This answer有一些C#/ COM幕後神奇的更多細節暴露了即時聊天,IBodyPart和接口的IDataSource。

+0

觀看在VC#消息接口定義2010它包含[伴生類(typeof運算(MessageClass的))],以及MessengerClass被定義爲一束的虛擬當功能我很困惑 – Nate

0

只要到CDO參考 右擊它選擇 性能 和嵌入互操作類型的屬性更改爲False