Я хотел бы иметь возможность использовать стандартные символические имена для HRESULT, возвращаемые компонентами COM в моем .NET-коде. Например, я хотел бы иметь возможность писать код так:Символьные имена для COMException Коды ошибок HRESULT в .NET
try {
someComObject->DoSomething();
}
catch (COMException ex) {
if (ex.ErrorCode == E_FAIL) {
HandleFail();
}
else if (ex.ErrorCode == E_OUTOFMEMORY) {
HandleOutOfMemory();
}
else {
HandleComError(ex.ErrorCode);
}
}
Однако, я не могу найти где-нибудь в рамках .NET, где символы, такие как E_FAIL, E_OUTOFMEMORY, E_UNEXPECTED, и так далее определяются , Для собственных приложений Win32 можно получить определения от <winerror.h> (см. http://msdn.microsoft.com/en-us/library/aa378137(VS.85).aspx).
Я могу, конечно, определить их сам, там, где они нужны мне, как это:
int E_FAIL = unchecked((int)0x80004005L);
Но я бы предпочел, чтобы получить определения из стандартного места, если таковые имеются. Я думаю, что нашел их где-то один раз, но мои поисковые запросы MSDN не нашли их сейчас.
Есть ли набор таких определений где-то в библиотеках .NET?
Множество определений в платформе .NET, все внутренние. Вы можете скопировать/вставить их с помощью Reflector. Но список pinvoke.net, вероятно, более полезен. –