我试图在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函数来传递它。
答案 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)