如何使用反射将ref参数从托管c ++传递到c#方法

时间:2018-09-16 18:41:04

标签: c# c++-cli

我无法将ref参数从托管C ++包装器传递到动态加载的库中的C#方法。 参数的返回值为0。

C#方法

void method(ref int param)

具有跟踪参考的C ++ / CLI包装器调用方法

Assembly^ assembly = Assembly::LoadFrom(assemblyName);
Type^ type = assembly->GetType(typeName);
gcroot<Object^> instance = Activator::CreateInstance(type);
MethodInfo^ method = instance->GetType()->GetMethod(methodName);

System::Int32^% refParam = gcnew System::Int32;
method->Invoke(instance, gcnew array<Object^> { refParam });
//refParam value is 0

1 个答案:

答案 0 :(得分:1)

我能够从传递给Invoke方法的数组中读取更新的值。

array<Object^>^ args = gcnew array<Object^> { refParam };
method->Invoke(instance, args);

int value = (int)args[0];