C# .NET是否定义了常见的HRESULT值? 我在C++中创建了一个COM类,它将从非托管C++调用。我想使用,但我不想硬编码HRESULT数值

C# .NET是否定义了常见的HRESULT值? 我在C++中创建了一个COM类,它将从非托管C++调用。我想使用,但我不想硬编码HRESULT数值,c#,.net,com,.net-4.0,com-interop,C#,.net,Com,.net 4.0,Com Interop,我原以为.Net中某处会有一些常见HRESULT值的枚举 换句话说,我在哪里可以找到映射到HRESULT值的命名符号,通过wExceptionForHR传递到 更新: MS在此页面中讨论它:。它们引用VSConstants类,但当我尝试使用它时,它声称名称空间不存在。是的,.NET预定义了HRESULT值。您通过不帮助来使用它们,抛出一个标准的.NET异常,就像托管程序使用您的库时那样。如果匹配明显(如OutOfMemoryException==0x800700E),则异常的HResult属性值

我原以为.Net中某处会有一些常见HRESULT值的枚举

换句话说,我在哪里可以找到映射到HRESULT值的命名符号,通过wExceptionForHR传递到

更新:


MS在此页面中讨论它:。它们引用VSConstants类,但当我尝试使用它时,它声称名称空间不存在。

是的,.NET预定义了HRESULT值。您通过不帮助来使用它们,抛出一个标准的.NET异常,就像托管程序使用您的库时那样。如果匹配明显(如OutOfMemoryException==0x800700E),则异常的HResult属性值有时与公共HResult值匹配,通常为0x8013xxxx值


xxxx值被广泛记录并列在CorError.h SDK头文件中。IErrorInfo::GetDescription()为您提供异常的消息属性值。自动本地化,很好。无法获取神圣堆栈跟踪。

在参考源中搜索一个?好像有很多!我不认为这个有标记的问题是骗人的。我不是专门针对枚举,而是针对任何命名值,这样我就可以避免输入原始数值。作为@AlexK。指出确实存在一些符号,但不清楚我应该使用哪个类。要使用
VSConstants
类,您必须安装以下软件包:这是非常有用的信息,但是-假设我想/需要使用
throweexceptionforhr
那么.NET是否有用于常见HRESULT值的预定义符号,我在哪里能找到它们?我对我的问题进行了相应的编辑,它们被嵌入到各种异常类的源代码中。如果要查看,请使用referencesource.microsoft.com。关键是你不应该看到它。我可以看到,这是一般情况,但事实是,MS提供了这种API方法作为一种通过互操作将故障发送给C++的方法。我找到了这个页面:当然,如果您想硬编码HRESULT值,可以使用它。你不想做的事,也有可能。