我希望能在我的.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库中是否有一组这样的定义?