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