在 C# 项目中,我需要通过将引用放入结构中来传递对象参数。即我有一个结构传递给调度员
struct SOMESTRUCT
{
public int lpObject;
}
其中 lpObject 包含一个指向自定义对象的指针,例如
class SomeClass
{
private string foo;
}
SOMESTRUCT 结构从一个方法传递到另一个方法,最终到达我的代码。我无法修改执行流程,也无法修改奇怪的 SOMSTRUCT 系统,所以我猜唯一的解决方案是将我的对象转换为这样的指针:
var myObject = new SomeClass();
GCHandle GC = GCHandle.Alloc(myObject, GCHandleType.Pinned);
int myRef = GC.AddrOfPinnedObject().ToInt32();
GC.Free();
SOMESTRUCT struct;
struct.lpObject = myRef;
someMethod(struct);
但是,我不知道如何从 lpObject 字段中检索 myObject 成员。像这样的东西:
SomeClass myObject = CastPointerToObject(struct.myRef) as SomeClass;
有没有办法做到这一点,还是不可能?如何告诉垃圾收集器处理对象?我应该创建一个新的垃圾收集对象并逐个字段复制数据吗?
蒂亚,