.NET是否定义了常见的HRESULT值?

我在C#中创建一个COM类,它将从非托管C ++中调用。 我想使用ThrowExceptionForHR,但我不想硬编码HRESULT数值。

我原以为在.Net某处会有一些常见的HRESULT值?

换句话说,在哪里可以找到映射到HRESULT值的命名符号以传递给ThrowExceptionForHR

更新:

MS在此页面中讨论它: 管理代码中的HRESULT信息 。 它们引用了VSConstants类Microsoft.VisualStudio.VSConstants但是当我尝试使用它时,它声称命名空间不存在。

是的,.NET预定义了HRESULT值。 如果托管程序使用您的库,您可以通过帮助使用它们,抛出标准.NETexception。 如果匹配很明显(例如OutOfMemoryException == 0x800700E),则exception的HResult属性值有时会匹配常见的HRESULT值,通常为0x8013xxxx值。

xxxx值被广泛记录并列在CorError.h SDK头文件中。 IErrorInfo :: GetDescription()为您提供exception的Message属性值。 自动本地化,很好。 你无法得到神圣的堆栈痕迹。