COM接口实例化C#

时间:2012-08-26 22:03:14

标签: c# com interface instantiation

我正在使用CDO COM DLL来处理.eml个文件。当我尝试实例化MessengerClass类时,VC#2010告诉我必须使用该接口进行实例化。例如

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

而不是

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

这怎么可能?这个实例不会丢失所有功能吗? This article说要做同样的事情。 我错过了什么?接口是否仍包含可用功能?

3 个答案:

答案 0 :(得分:1)

CDO.Message类根据MSDN

公开IMessage,IBodyPart和IDataSource接口

This answer有更多关于幕后魔术的C#/ COM的详细信息。

答案 1 :(得分:1)

编译器将new COMInterface()转换为查找实现该接口的COM类的实际COM代码。

据我所知,COM接口没有多个实现;相反,运行时从HKCR \ Classes { guid }中指定的适当DLL加载实现。
(我对COM知之甚少,所以这可能不准确。

答案 2 :(得分:0)

请转到CDO参考 右键单击它 选择了属性 并将Embed Interop Types的属性更改为False