में शून्य से * ऑब्जेक्ट में रूपांतरण सी # प्रोजेक्ट में, मुझे संरचना में संदर्भ डालकर ऑब्जेक्ट पैरामीटर को पास करने की आवश्यकता है। अर्थात मैं एक संरचना एक डिस्पैचरसी #
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,
int के बजाय IntPtr का उपयोग करें ....तो यह 64 बिट के साथ-साथ –