Использование RFCOMAPIlib (RightFax COM API): Невозможно привести COM-объект

Я работаю с RightFax COM API. Я хочу просто отправить факс с приложением. Просто верно? На этот вопрос ответили несколько раз. Однако, когда я использую часть этого кода в своем приложении, у меня возникают небольшие проблемы.

Применение: RightFax 9.4
Язык: C# (приложение ASP.NET)
IDE: MS Visual Web Dev. экспресс
Целевая платформа: .NET 3.5
ОС: Windows 7

using ...
public static void SendFax(<arguments>)
{
    RFCOMPAPILib.FaxServerClass fs = new RFCOMAPILib.FaxServerClass();
    fs.Name = "faxSvrName";
    // BOOM, exception
}

Я даже не понимаю имя сервера.

Детали исключения:
Невозможно привести объект COM типа "RFCOMAPILib.FaxServerClass" к типу интерфейса "RFCOMAPILib.Form". Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{9F386618-764B-48F8-A5BF-3682B03DE840}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)),

Так. Какие-либо предложения?

1 ответ

Решение

Этот интерфейс COM был немного переработан, но шаблон не является необычным. COM-класс COM может реализовывать несколько интерфейсов, один из которых является интерфейсом по умолчанию. Этот механизм не существует в.NET, он не поддерживает множественное наследование или понятие интерфейса по умолчанию. Tlbimp синтезирует поддельный класс-обертку с именем mumbleClass, чтобы обернуть кокласс с именем mumble. Что является сумкой всех методов, реализованных всеми интерфейсами. Сообщение об исключении говорит вам, что интерфейс по умолчанию для Coclass класса FaxServer называется "Form". И этот RFCOMAPILib.Form не может быть приведен к RFCOMAPILib.FaxServerClass. Нет большого сюрприза.

Вам нужно переписать код в нечто похожее на это:

 RFCOMPAPILib.FaxServer fs = new RFCOMAPILib.FaxServerClass();
 fs.Name = "faxSvrName";

Я полностью догадываюсь по имени интерфейса, некоторые шансы для "IFaxServer". Используйте Object Browser, чтобы найти реальное имя.

Другие вопросы по тегам