【问题标题】:Making a COM dll to be invoked from c#, HRESULT error handling?从 C# 调用 COM dll,HRESULT 错误处理?
【发布时间】:2011-02-13 15:10:27
【问题描述】:

我正在制作一个 C# 将使用的 COM 接口,但是我想知道如何检查 C# 端异常处理的错误。目前我只是为大多数方法返回 HRESTULT 或 bool,然后执行 Marshal.ThrowExceptionForHR 但在其中一些方法中可能会出错,并且返回 E_FAIL 并不能解决问题。

我该怎么做才能返回更多信息?我可以自己制作一个 HRESULT 吗?

【问题讨论】:

    标签: c# com interop


    【解决方案1】:

    我从来没有真正做到这一点,但理论上你应该可以通过supporting IErrorInfo 做到这一点。 Marshal.GetExceptionForHR() 有一个采用 IErrorInfo 指针的重载。

    顺便说一句,您不必手动调用Marshal.ThrowExceptionForHR() - 如果您的方法返回 HRESULT 和 [out] 参数作为返回值,您可以在 .NET 中将其声明为返回返回值和 set PreserveSig=false 和如果 HRESULT 指示失败,CLR 将自动抛出异常。

    【讨论】:

      猜你喜欢
      • 2012-02-23
      • 1970-01-01
      • 2014-02-09
      • 2015-02-22
      • 2016-12-01
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多