在C#項目中,我需要通過將參考放入結構中來傳遞對象參數。 即我傳遞給調度員從void *轉換爲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);
但是,我想不出如何檢索myObject的成員來自lpObject字段。像這樣的東西:
SomeClass myObject = CastPointerToObject(struct.myRef) as SomeClass;
有沒有辦法做到這一點,或者它是不可能的?我如何告訴垃圾收集器處理對象?我應該創建一個新的垃圾收集對象並按字段複製數據字段?
TYIA,
使用IntPtr而不是int ....所以它也能在64位下工作 – 2011-01-15 16:32:47