Создание пользовательских HRESULT
был покрыт здесь
Создаете свой HRESULT?
Решение вышеуказанного вопроса хорошо для нативных клиентов c ++, они могут использовать возвращенные HRESULT
в FormatMessage()
и получить строку ошибки, как насчет C # и JavaScript-клиента? Ради обсуждения давайте забудем FormatMessage()
через PInvoke.
например если функция COM возвращает E_ACCESSDENIED
и клиент C # получит его через красиво упакованное исключение, со строкой ошибки и символическим именем (E_ACCESSDENIED
)
System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Понятно, что системные коды ошибок были сопоставлены с исключениями .Net.
Вопрос в том, как вернуть сгенерированный компилятором сообщения пользовательский код ошибки, упакованный в HRESULT
?
Является MAKE_HRESULT
ответ?
Задача ещё не решена.