Я не вижу причины, по которой это сработает, учитывая документы здесь:
http://msdn.microsoft.com/en-us/library/aa366807(VS.85).aspx
Интерфейсы, идентифицированные двойным
атрибут должен быть совместим с
Автоматизация и быть производным от
IDispatch. Этот атрибут не
разрешено на интерфейсах.
Возможно, атрибут [dual]
неявно добавляет IDispatch
к интерфейсу.
Что вы можете сделать, это проверить код, реализующий интерфейс (при условии, что это ATL), если он происходит от IDispatchImpl
. Если это так, он фактически отвечает на QI для IDispatch
и может использоваться как таковой.
Другой альтернативой является создание объекта, реализующего IOurInterface
, и выполнение QI для IDispatch
- если это удастся, вы, вероятно, не сможете удалить его.
На самом деле, если подумать, может быть, [dual]
не требует технически от вас наследовать от IDispatch
, пока вы реализуете и свой пользовательский интерфейс, и IDispatch
?