COM `HRESULT` заключен в исключение в .NET

(предварительное примечание: я еще не полностью освоил всю эту штуку с «взаимодействием» ...)

При использовании библиотеки COM из .NET, все методы HRESULT обертываются во что-то, что выдает, когда код возврата НЕ УСПЕШНО.

//ATL magic exluded
class C {
    HRESULT foo(){ return E_FAIL; }
};

// usage code:
if( SUCCEEDED( c.foo() ) ) {
   // success code
} else {
   // failure code
}

Аналог этого кода для .NET гласит:

try {
   c.foo();
   // success code
} catch ( Exception e ) {
   // failure code
}

Есть ли способ получить доступ к коду возврата COM непосредственно в .NET, чтобы не обрабатывать исключения?

6
задан xtofl 16 June 2011 в 11:31
поделиться