.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);
}
}
しかし、E_FAIL、E_OUTOFMEMORY、E_UNEXPECTED などのシンボルが定義されている .NET フレームワークの場所を見つけることができません。ネイティブ Win32 アプリの場合、<winerror.h> から定義を取得できます ( http://msdn.microsoft.com/en-us/library/aa378137(VS.85).aspxを参照)。
次のように、必要な場所で自分で定義できます。
int E_FAIL = unchecked((int)0x80004005L);
しかし、可能であれば、標準的な場所から定義を取得したいと思います。私はそれらがどこかで定義されているのを見つけたと思いますが、私の MSDN 検索は今それらを見つけていません。
.NET ライブラリのどこかにそのような定義のセットはありますか?