2012-08-26 42 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