Я хотел бы иметь возможность использовать стандартные символические имена для HRESULT, возвращаемых компонентами COM в моем .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 можно получить определения из(см. http://msdn.microsoft.com/en-us/library/aa378137(VS.85).aspx).
Я, безусловно, могу определить их сам, где бы они мне ни понадобились, например:
int E_FAIL = unchecked((int)0x80004005L);
Но я бы предпочел получить определения из стандартного места, если оно доступноКажется, я когда-то нашел их где-то определенными, но мои поиски в MSDN сейчас их не находят.
Есть ли где-то в библиотеках .NET набор таких определений?