2013-08-23 2 views
1

В моем коде C# я хочу, чтобы иметь возможность регистрировать COMException s, чтобы выводилось не только шестнадцатеричное представление HRESULT s (например, 0x80004005), но и соответствующий символ WinError.h (например, E_FAIL).Есть ли встроенный способ представления HRESULT в качестве константы winerror.h, такой как E_FAIL?

Если я называю ToString() ссылкой на исключение, имеется только шестнадцатеричное представление.

Есть ли встроенный способ получения E_FAIL-подобных человекочитаемых констант для значений HRESULT внутри объектов COMException?

ответ

4

Нечто подобное с помощью COMException «s HResult свойства

unchecked 
{ 
    var msg = Marshal.GetExceptionForHR((int)0x80004005).Message; 
}