Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从C#NET.COM引发异常_C#_Delphi_Com_Delphi 7 - Fatal编程技术网

如何从C#NET.COM引发异常

如何从C#NET.COM引发异常,c#,delphi,com,delphi-7,C#,Delphi,Com,Delphi 7,如何从C#NET COM引发异常。事实上,我正在使用Borland Delphi 7.0构建Win32应用程序,我正在尝试使用.NET中的函数。除了C#中引发异常的事实没有被重新路由到Delphi之外,一切都很正常,我想我错过了某种方法装饰器。下面是一段代码: void iLinkV2.FindLinkedClientEng(string SourceApp, string SourceClientID, ref object ClientID, ref object Engageme

如何从C#NET COM引发异常。事实上,我正在使用Borland Delphi 7.0构建Win32应用程序,我正在尝试使用.NET中的函数。除了C#中引发异常的事实没有被重新路由到Delphi之外,一切都很正常,我想我错过了某种方法装饰器。下面是一段代码:

void iLinkV2.FindLinkedClientEng(string SourceApp, string SourceClientID,
     ref object ClientID, ref object Engagement)
{
    throw new COMException("errClientNotFound",
        (int)ExceptionsType.errClientNotFound);
    ClientID  = SourceClientID; 
}

[ComVisible(true),
 Guid("D731C821-EEA2-446E-BC5A-441DCA0477F5"),
 InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface iLinkV2
{ ...
}

你不需要。异常不是COM互操作规范的一部分,不应跨越模块边界。您可以使用状态代码指示任何错误


在方法退出之前捕获异常(在每个COM接口方法中)。将结果转换为错误代码。如果您使用
HRESULT
,那么您可以将其作为
safecall
使用,并让Delphi编译器在隔离墙的另一端重新引发异常。

不确定您是否不需要,这将是我的解释方式。谢谢,我很困惑,因为我一开始看到的是Delphi COM,而且由于Delphi能够管理异常重新路由,所以我认为.Net显然也能够做到这一点。