我希望能够在我的 .NET 代码中使用由 COM 组件返回的 HRESULT 的标准符号名称。例如,我希望能够编写如下代码:
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 库中的某处是否有一组这样的定义?