मैं बिना किसी संदर्भ के क्लास ऑब्जेक्ट की प्रति कैसे बना सकता हूं? ICloneable
एक क्लास ऑब्जेक्ट की प्रतिलिपि बनाता है (उथले प्रतिलिपि के माध्यम से) लेकिन गहरी प्रतिलिपि का समर्थन नहीं करता है। मैं ऐसे फ़ंक्शन की तलाश में हूं जो क्लास ऑब्जेक्ट के सभी सदस्यों को पढ़ने के लिए पर्याप्त स्मार्ट है और सदस्य नाम निर्दिष्ट किए बिना किसी अन्य ऑब्जेक्ट में गहरी प्रतिलिपि बनाते हैं।बिना किसी संदर्भ के क्लास ऑब्जेक्ट की प्रति कैसे बनाएं?
5
A
उत्तर
4
मैं एक समाधान के रूप में यह देखा है, मूल रूप से के बाद से आप के बारे में ICloneable एक गहरी प्रतिलिपि
public static T DeepCopy(T other)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, other);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}
मैं इस सूत्र को संदर्भित कर रहा हूँ नहीं कर क्या कहा यह करने के लिए अपने स्वयं के समारोह में लिखें। copy a class, C#
0
public static object Clone(object obj)
{
object new_obj = Activator.CreateInstance(obj.GetType());
foreach (PropertyInfo pi in obj.GetType().GetProperties())
{
if (pi.CanRead && pi.CanWrite && pi.PropertyType.IsSerializable)
{
pi.SetValue(new_obj, pi.GetValue(obj, null), null);
}
}
return new_obj;
}
आप अपनी आवश्यकताओं को समायोजित कर सकते हैं। उदाहरण के लिए,
if (pi.CanRead && pi.CanWrite &&
(pi.PropertyType == typeof(string) ||
pi.PropertyType == typeof(int) ||
pi.PropertyType == typeof(bool))
)
{
pi.SetValue(new_obj, pi.GetValue(obj, null), null);
}
या
if (pi.CanRead && pi.CanWrite &&
(pi.PropertyType.IsEnum || pi.PropertyType.IsArray))
{
...;
}
[क्लोन पूरी वस्तु ग्राफ़] की
+0
क्या यह किसी भी तरह से रिकर्सिव तरीके से है जिसे मैं स्पष्ट रूप से नहीं देख सकता हूं? –
संबंधित मुद्दे
- 1. संदर्भ के बिना किसी वस्तु की एक प्रति कैसे बनाएं?
- 2. किसी सरणी की गहरी प्रति कैसे बनाएं?
- 3. UIBezierPath की स्वतंत्र प्रति बनाएं?
- 4. मॉड्यूल नाम के बिना संदर्भ रूबी क्लास
- 5. सी #: ऑब्जेक्ट्स के बीच मजबूत संदर्भ बनाएं, बिना किसी संदर्भ के अन्य
- 6. किसी ऑब्जेक्ट से ऑब्जेक्ट आउटपुट स्ट्रीम बनाएं
- 7. विभिन्न संदर्भ के साथ एक ही वस्तु की प्रति कैसे बनाएं?
- 8. क्लास ऑब्जेक्ट के लिए कस्टम स्ट्रिंग प्रस्तुति कैसे बनाएं?
- 9. एनएसओब्जेक्ट के बिना उद्देश्य-सी में रूट ऑब्जेक्ट कैसे बनाएं?
- 10. किसी ऑब्जेक्ट का प्रिंटिंग संदर्भ
- 11. आईफोन आईओएस क्लास ऑब्जेक्ट को किसी अन्य क्लास ऑब्जेक्ट से कैसे तुलना करें?
- 12. एनएसटीएनेज्ड ऑब्जेक्ट क्लास का उपयोग बिना initWithEntity :?
- 13. ArrayList ऑब्जेक्ट की एक प्रति कैसे बनाएं जो सूची का प्रकार है?
- 14. PHP में किसी ऑब्जेक्ट की संदर्भ संख्या प्राप्त करें?
- 15. 2 डी संदर्भ बनाएं * बिना * कैनवास
- 16. किसी शेयरपॉइंट प्रोजेक्ट के लिए क्लास लाइब्रेरी बनाएं
- 17. एक पायथन फ़ंक्शन की एक प्रति कैसे बनाएं
- 18. Quartz.Net नौकरी के भीतर किसी तत्काल ऑब्जेक्ट का संदर्भ कैसे बनाएं?
- 19. आप जावा में किसी ऑब्जेक्ट की गहरी प्रति कैसे बनाते हैं?
- 20. PostgreSQL डेटाबेस या स्कीमा की एक प्रति कैसे बनाएं?
- 21. बिना किसी आकार के स्ट्रीम से ड्रायबल कैसे बनाएं?
- 22. ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है।
- 23. पायथन में किसी ऑब्जेक्ट के प्रत्येक संदर्भ को कैसे हटाएं?
- 24. यदि किसी क्लास में संदर्भ डेटा सदस्य
- 25. किसी भी डेटास्रोत के बिना DataGridView से डेटाटेबल कैसे बनाएं?
- 26. किसी ऑब्जेक्ट के रूप में डोम नोड कैसे बनाएं?
- 27. किसी ऑब्जेक्ट
- 28. ऑब्जेक्ट() और क्लास myClass (ऑब्जेक्ट)
- 29. प्रति-आवृत्ति संपत्ति वर्णनकर्ता बनाएं?
- 30. ग्रोवी गतिशील संपत्ति प्रति ऑब्जेक्ट
संभव डुप्लिकेट (http://stackoverflow.com/questions/2417023/clone-whole-object-graph) – xanatos
त्वरित और गंदे समाधान वस्तु को क्रमबद्ध करना और तुरंत किसी अन्य वस्तु को deserialize है। बेशक यह इस बात पर निर्भर करता है कि ऑब्जेक्ट को सही ढंग से क्रमबद्ध किया जा सकता है ... – canon