में संदर्भ द्वारा वस्तुओं को ऑब्जेक्ट्स और ऑब्जेक्ट्स की एक सूची पास करना मेरे पास एक प्रतिनिधि है जो किसी ऑब्जेक्ट को संशोधित करता है। मैं एक ऑब्जेक्ट को एक कॉलिंग विधि से प्रतिनिधि को पास करता हूं, हालांकि कॉलिंग विधि इन परिवर्तनों को नहीं उठाती है। यदि मैं ऑब्जेक्ट के रूप में List
पास करता हूं तो वही कोड काम करता है।सी #
मैंने सोचा कि सभी वस्तुओं को संदर्भ द्वारा पारित किया गया था ताकि किसी भी संशोधन कॉलिंग विधि में दिखाई दे। क्या वो सही है?
मैं प्रतिनिधि को ref
ऑब्जेक्ट पास करने के लिए अपना कोड संशोधित कर सकता हूं। लेकिन मैं सोच रहा हूं कि यह क्यों जरूरी है। या यह है?
public class Binder
{
protected delegate int MyBinder<T>(object reader, T myObject);
public void BindIt<T>(object reader, T myObject)
{
//m_binders is a hashtable of binder objects
MyBinder<T> binder = m_binders["test"] as MyBinder<T>;
int i = binder(reader, myObject);
}
}
public class MyObjectBinder
{
public MyObjectBinder()
{
m_delegates["test"] = new MyBinder<MyObject>(BindMyObject);
}
private int BindMyObject(object reader, MyObject obj)
{
obj = new MyObject
{
//update properties
};
return 1;
}
}
///calling method in some other class
public void CallingMethod()
{
MyObject obj = new MyObject();
MyObjectBinder binder = new MyObjectBinder();
binder.BindIt(myReader, obj); //don't worry about myReader
//obj should show reflected changes
}
अद्यतन:
मैं अब प्रतिनिधि को ref
द्वारा वस्तुओं गुजर रहा जैसा कि मैंने BindMyObject
के अंदर एक नई वस्तु instantiating कर रहा हूँ।
protected delegate int MyBinder<T>(object reader, ref T myObject);
मुझे एहसास है कि आप मूल नामों को छिपाने की कोशिश कर रहे हैं, लेकिन आपको इसे साफ़ करना होगा। 'कॉलिंग मोड' के अंदर 'माईबिंदर' निश्चित नहीं है, 'MyObjectBinder' का उपयोग नहीं किया जाता है ... क्या वे वही हैं? मैं केवल यह मानने की कोशिश कर सकता हूं, और मैं ऐसा नहीं करना चाहता ... – Randolpho