通过ref将字符串传递给C#中的activex组件

时间:2015-07-08 21:08:00

标签: c# com activex

我试图在C#中使用模式function(ref string returnvalue)尝试ActiveX API函数。 API函数修改字符串。

string returnValue = String.Empty;
api.func(ref returnValue); // DISP_E_TYPEMISMATCH

好吧,也许是因为字符串是不可变的。每个this尝试StringBuilder

StringBuilder returnValue = new StringBuilder(128);
api.func(returnValue);

这会导致关于类型不匹配的编译时错误。

如何调用此功能?

我不知道是否需要将C#字符串封送到BStr,如果是这样,我不知道如何通过参考API函数来传递它。

2 个答案:

答案 0 :(得分:0)

如果func更改returnValue,我认为您的代码应该像这样更改:

string returnValue = String.Empty;
api.func(ref returnValue);

您应先通过ref传递returnValue {/ 1}}。

UPD:您是否尝试过这样称呼它?:

api.func(ref Marshal.StringToBSTR(string value));

答案 1 :(得分:-1)

通过引用string变量来调用它,如下所示:

string returnValue = "";
api.func(ref returnValue);

您可能需要查看C#中的refout个关键字。