问题描述
我正在尝试通过pinvoke将指向“ ref Struct”的指针传递给某些C ++代码,以便可以通过委托回调将其传递回C#(然后转换回ref),以避免使用默认值由于该结构不可变而发生的封送处理(请参阅我的其他问题How to to pass a C# delegate (callback) with a ref struct parameter to C++ using SWIG)
我可以通过使用Unsafe.AsPointer获得指向包含不可变字段的普通结构的指针。但是,对于下面的代码所示的引用结构,它不会编译(CS0306):
public struct normalStruct
{
public int value;
public string text;
}
public ref struct RefStruct
{
public int value;
public string text;
}
normalStruct ns = new normalStruct() { value = 42 };
RefStruct rs = new RefStruct() { value = 42 };
// This works
void* nsPtr = Unsafe.AsPointer(ref ns);
// This won't compile with CS0306;
void* rsPtr = Unsafe.AsPointer(ref rs);
是否有某种方法可以获取指向ref结构的指针-或更改类型的默认封送处理
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)