In a C# project, I need to pass object parameters by putting references in a structure. i.e. I have a structure passed to a dispatcher
struct SOMESTRUCT
{
public int lpObject;
}
1. 标有一对一等习俗物体的点
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);
然而,我可以说明如何从野外收回我的野心成员。 与此类似:
SomeClass myObject = CastPointerToObject(struct.myRef) as SomeClass;
是否有办法这样做? 我怎么能告诉垃圾收集器处理物体? 我是否应当建立一个新的垃圾收集物体,并按实地复制数据领域?
TYIA,