Привет всем.
Помогите, пожалуйста, разобраться в базой вещи — как из метода COM-объекта, написанного на шарпе, следует возвращать ошибки?
Наверное, вообще никаких напрягов быть не должно. Но что-то не получается.
Есть код вида
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[SuppressUnmanagedCodeSecurity]
[Guid("bla-bla-bla")]
public unsafe interface IMyComInterface
{
[PreserveSig]
com.HResultCode Method();
};//interface IMyComInterface
unsafe class TMyComInterface:IMyComInterface
{
[PreserveSig]
public com_lib.HResultCode Method()
{
var exc=new ApplicationException("TEST EXCEPTION!");
throw exc;
}//Read
};//class TMyComInterface
Программа на плюсах, когда вызывает Method, получает код ошибки S_OK. Хотя ApplicationException содержит hr=COR_E_APPLICATION.
Если убрать PreserveSig, то процесс валится (походу исключение вылетает и всё убивает).
Вообщем — где я перемудрил? Или мне нужно самому возвращать hr и вызывать SetErrorInfo?
Заранее спасибо!
-- Пользователи не приняли программу. Всех пришлось уничтожить. --