C# 来自COM组件的自定义HRESULT
这里介绍了如何创建自定义C# 来自COM组件的自定义HRESULT,c#,c++,com,hresult,C#,C++,Com,Hresult,这里介绍了如何创建自定义HRESULT 上述问题的解决方案对于C++本地客户端是很好的,他们可以使用返回的 HESRESU/ 格式消息()/并获取错误字符串,C C和JavaScript客户端怎么办?为了便于讨论,让我们忘记通过PInvoke发送的FormatMessage() e、 g.如果COM函数返回e_ACCESSDENIED,C#客户端将通过精心打包的异常接收它,并带有错误字符串和符号名(e_ACCESSDENIED) System.UnauthorizedAccessExcepti
HRESULT
<>上述问题的解决方案对于C++本地客户端是很好的,他们可以使用返回的<代码> HESRESU/<代码> <代码>格式消息()/<代码>并获取错误字符串,C C和JavaScript客户端怎么办?为了便于讨论,让我们忘记通过PInvoke发送的FormatMessage()
e、 g.如果COM函数返回e_ACCESSDENIED
,C#客户端将通过精心打包的异常接收它,并带有错误字符串和符号名(e_ACCESSDENIED
)
System.UnauthorizedAccessException:访问被拒绝。(HRESULT的异常:0x80070005(E_ACCESSDENIED))
据了解,系统错误代码已映射到.Net异常。
问题是如何返回由编译器生成的、打包在HRESULT
中的自定义错误代码
MAKE\HRESULT
是答案吗?检查并实施。另外,您的自定义HRESULT值应该在适当的自定义HRESULT工具中。这就像JavaScript的魅力一样,但C#仍然不能生成漂亮的消息。对不起,我从15年前就没有直接使用过这种东西。否则,您的描述可能会触发一些“啊哈,这就是它所说的”识别电路:(说它应该可以工作……在C#中也可以工作,CLR总是查询ISupportErrorInfo。你可以看到它正在运行。你一定是做错了,我们看不到你做错了。检查并实现。此外,你的自定义HRESULT值应该在适当的自定义HRESULT设施中。这对JavaScript来说很有吸引力,但是C#仍然不能产生漂亮的信息。对不起,我从15年前就没有直接接触过这种东西。否则你的描述可能会触发一些“啊哈,这就是它的意义”的识别电路(说它应该可以工作……在C#中也可以工作,CLR总是查询ISupportErrorInfo。你可以看到它正在运行。你一定是做错了,我们看不到你做错了。检查并实现。此外,你的自定义HRESULT值应该在适当的自定义HRESULT设施中。这对JavaScript来说很有吸引力,但是C#仍然不能产生漂亮的信息。对不起,我从15年前就没有直接接触过这种东西。否则你的描述可能会触发一些“啊哈,这就是它的意义”的识别电路(说它应该可以工作……在C#中也可以工作,CLR总是查询ISupportErrorInfo。你可以看到它正在运行。你一定是做错了,我们看不到你做错了。