C#COM vs C++ COM返回值

Cob*_*aia 1 c# c++ com com-interop

我正在构建一个COM组件C#,客户可以设置二进制数据.如果COM组件返回异常而不是错误代码会很好,但是意识到在(Delphi,C++和JScritp)中处理异常很困难.我选择它接收十六进制数据(内部转换为二进制)并以十六进制返回(内部将二进制转换为十六进制).
方法getData可以返回数据和错误代码,问题是:如何在C#interop中执行此操作?

在C++ COM中存在HRESULT

HRESULT getData([in] int __position, [out,retval] BSTR* __data); // can Return __data or error -1 data not exists
HRESULT setData([in] BSTR __data, [out,retval] int* __status);
Run Code Online (Sandbox Code Playgroud)

但在C#COM ??

int getData ??? // return __status or __data;
int setData(String __data); // return __status;
Run Code Online (Sandbox Code Playgroud)

提前致谢,

Sha*_*ell 6

C#将已知的C#异常映射到HRESULT值. 是Microsoft关于映射列表的文档.您可以通过抛出COMException来获得进一步的控制.