Я создаю сборку .NET, которая должна быть COM-вызываемой, например. VB6 и т. Д.Установка определенного значения COM HRESULT из .NET.
Большая часть материала отлично работает - сейчас я точно настраиваю обработку ошибок.
Что я хотел бы сделать, это создать определенные значения HRESULT
за исключением моих исключений - например. используйте значения, такие как 0x88880001
и т. д. для моих случаев исключения. Я бы хотел использовать общий «префикс» (например, 0x8888
), а затем добавить к этому номер мои внутренние коды ошибок (от десятичного до 1001 вверх).
Таким образом, моя внутренняя ошибка 1001 должна стать HRESULT = 0x888803E9
и так далее.
У меня есть свой собственный класс исключений .NET, и я знаю, что могу установить защищенное свойство HResult
на базе ApplicationException
класс - но почему-то мне не удается получить мой «префикс» плюс мой код ошибки для работы. ...
с использованием системы;
public class CustomException : ApplicationException
{
public CustomException(string message, int errorCode) : base(message)
{
base.HResult = (uint) 0x88880000 + errorCode;
}
}
Независимо от того, что я пытаюсь здесь - я просто не могу получить int
значение (для base.HResult
, который является int
), который представляет 0x888803E9
хранить в моем базовом классе ...
Что же я отсутствует здесь ??
Спасибо, это похоже на трюк - независимо от настроек проекта! :-) Не могу поверить, что настройки ** ВЫКЛ ** по умолчанию, в проекте C# .... в VB - может быть, ОК - но на C# - серьезно? –
Он включен по умолчанию в VB. К сожалению, проверка переполнения довольно дорога, большие потери. –