我正在使用 CDO COM DLL 来处理.eml
文件。当我尝试实例化 MessengerClass 类时,VC#2010 告诉我必须使用接口实例化,例如
CDO.Message msg = new CDO.Message();
代替
CDO.Message msg = new CDO.MessageClass();
怎么会这样?这个实例不会缺少所有功能吗? 这篇文章说要做同样的事情。我错过了什么?界面是否仍然包含可用的功能?
我正在使用 CDO COM DLL 来处理.eml
文件。当我尝试实例化 MessengerClass 类时,VC#2010 告诉我必须使用接口实例化,例如
CDO.Message msg = new CDO.Message();
代替
CDO.Message msg = new CDO.MessageClass();
怎么会这样?这个实例不会缺少所有功能吗? 这篇文章说要做同样的事情。我错过了什么?界面是否仍然包含可用的功能?
CDO.Message 类根据MSDN公开了 IMessage、IBodyPart 和 IDataSource 接口
这个答案有更多关于幕后魔术的 C#/COM 的详细信息。
编译器翻译成实际的 COM 代码,查找实现接口的 COM 类。new COMInterface()
据我了解,COM 接口没有多种实现。相反,运行时从 HKCR\Classes{ guid } 中指定的适当 DLL 加载实现。
(我对 COM 了解不多,所以这可能不准确。
只需转到 CDO 参考,右键单击它选择 Properties 并将 Embed Interop Types 的属性更改为 False