C#COMponent引发的异常消息是否通过interop传递给C?

C#COMponent引发的异常消息是否通过interop传递给C?,第1张

概述如果我在C#类中实现一个COM接口,它将从C模块调用,那么在发生故障的情况下,C#代码应抛出异常;这将由interop层编组为HRESULT故障代码. 但是,传递给Exception构造函数的任何消息文本(或其他信息)是否也可用于调用C代码?如果是这样,如何获得,即哪种API方法? 例如如果在我的C#代码中我抛出新的ArgumentException(“电子邮件地址无效”)我将除了我的COM HR 如果我在C#类中实现一个COM接口,它将从C模块调用,那么在发生故障的情况下,C#代码应抛出异常;这将由interop层编组为HRESulT故障代码.

但是,传递给Exception构造函数的任何消息文本(或其他信息)是否也可用于调用C代码?如果是这样,如何获得,即哪种API方法?

例如如果在我的C#代码中我抛出新的ArgumentException(“电子邮件地址无效”)我将除了我的COM HRESulT为E_INVALIDARG但是我的自定义文本将被编组或者我只能查找E_INVALIDARG的文本描述吗?

解决方法 鲜为人知的是,IErrorInfo对象(由 GetErrorInfo返回)也实现了 _Exception COM接口,该接口将 System.Exception类的公共成员公开给非托管代码,包括 StackTrace等.

要从C访问_Exception,您需要导入正确版本的mscorlib.tlb,例如:

#import "C:\windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb" raw_interfaces_only
总结

以上是内存溢出为你收集整理的C#COMponent引发的异常消息是否通过interop传递给C?全部内容,希望文章能够帮你解决C#COMponent引发的异常消息是否通过interop传递给C?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1224627.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存