我正在使用CDO COM DLL来处理.eml
个文件。当我尝试实例化MessengerClass类时,VC#2010告诉我必须使用该接口进行实例化。例如
CDO.Message msg = new CDO.Message();
而不是
CDO.Message msg = new CDO.MessageClass();
这怎么可能?这个实例不会丢失所有功能吗? This article说要做同样的事情。 我错过了什么?接口是否仍包含可用功能?
答案 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