我在C#中创建一个COM类,它将从非托管C ++中调用。我想使用ThrowExceptionForHR,但我不必硬编码HRESULT数值。
我原本期待某个地方会出现一些常见的HRESULT值?
换句话说,在哪里可以找到映射到HRESULT值的命名符号以传递到ThrowExceptionForHR
?
更新
MS在此页面中讨论它:HRESULT Information in Managed Code。它们引用了VSConstants类Microsoft.VisualStudio.VSConstants但是当我尝试使用它时,它声称名称空间不存在。
答案 0 :(得分:2)
是的,.NET预定义了HRESULT值。您可以通过 not 帮助使用它们,抛出标准.NET异常,就像托管程序使用您的库时一样。如果匹配很明显(例如OutOfMemoryException == 0x800700E),则异常的HResult属性值有时会匹配常见的HRESULT值,通常为0x8013xxxx值。
xxxx值被广泛记录并列在CorError.h SDK头文件中。 IErrorInfo :: GetDescription()为您提供异常的Message属性值。自动本地化,很好。你无法获得圣堆痕迹。