Trong dự án C#, tôi cần chuyển các tham số đối tượng bằng cách đặt tham chiếu trong cấu trúc. ví dụ: Tôi có một cấu trúc thông qua với một điều phốiChuyển đổi từ void * sang đối tượng trong C#
struct SOMESTRUCT
{
public int lpObject;
}
đâu lpObject giữ một con trỏ đến một đối tượng tùy chỉnh như
class SomeClass
{
private string foo;
}
Và cấu trúc SOMESTRUCT được chuyển từ phương pháp phương pháp để cuối cùng đạt được mã của tôi. Tôi không thể thay đổi dòng chảy thực hiện cũng không phải là hệ thống SOMSTRUCT lạ, nên tôi đoán giải pháp duy nhất là để đúc tượng của tôi đến một con trỏ như thế này:
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);
Tuy nhiên, tôi không thể tìm ra cách để lấy các thành viên myObject từ các trường lpObject. Một cái gì đó như thế này:
SomeClass myObject = CastPointerToObject(struct.myRef) as SomeClass;
Có cách nào để thực hiện hoặc không thể? Làm thế nào tôi có thể nói với bộ thu gom rác để xử lý đối tượng? Tôi có nên tạo một đối tượng Thu gom rác mới và sao chép trường dữ liệu theo trường không?
TYIA,
sử dụng IntPtr thay vì int ....vì vậy nó sẽ hoạt động trong 64bit cũng như –