1

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

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

代替

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

怎么会这样?这个实例不会缺少所有功能吗? 这篇文章说要做同样的事情。我错过了什么?界面是否仍然包含可用的功能?

4

3 回答 3

1

CDO.Message 类根据MSDN公开了 IMessage、IBodyPart 和 IDataSource 接口

这个答案有更多关于幕后魔术的 C#/COM 的详细信息。

于 2012-08-26T22:13:13.283 回答
1

编译器翻译成实际的 COM 代码,查找实现接口的 COM 类。new COMInterface()

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

于 2012-08-26T22:21:15.620 回答
0

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

于 2014-08-04T11:20:02.573 回答