我正在使用RightFax COM API。我想做的只是发一份带附件的传真。简单的对吧?这个问题已经回答过几次了。然而,当我在我的应用程序中使用其中的一些代码时,我遇到了一点麻烦。
应用:RightFax 9.4
语言:c# (ASP。. NET应用程序)
IDE: MS Visual Web Dev. Express
目标框架:.NET 3.5
操作系统:Windows 7
using ...
public static void SendFax(<arguments>)
{
RFCOMPAPILib.FaxServerClass fs = new RFCOMAPILib.FaxServerClass();
fs.Name = "faxSvrName";
// BOOM, exception
}
我甚至没有看到服务器的名称。
异常详情:
无法强制转换类型为"RFCOMAPILib"的COM对象。FaxServerClass'到接口类型'RFCOMAPILib.Form'。此操作失败,因为IID为'{9F386618-764B-48F8-A5BF-3682B03DE840}'的COM组件上的QueryInterface调用失败,原因是由于以下错误:No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
。有什么建议吗?
这个COM接口被过度设计了一点,但是这种模式并不罕见。COM协类可以实现多个接口,其中一个是默认接口。这种机制在。net中不存在,它不支持多重继承或默认接口的概念。Tlbimp合成一个名为mumbleClass的假包装器类来包装名为mumble的辅助类。它是由所有接口实现的所有方法的集合。异常消息告诉您的是FaxServer协类的默认接口名为"Form"。还有那个RFCOMAPILib。Form不能强制转换为RFCOMAPILib.FaxServerClass。没什么好惊讶的
您需要将代码重写为类似这样的内容:
RFCOMPAPILib.FaxServer fs = new RFCOMAPILib.FaxServerClass();
fs.Name = "faxSvrName";
我完全在猜测接口名称,有可能是"IFaxServer"。使用对象浏览器查找实际名称