मुझे लगता है कि सामान्य व्यवहार करता है, तो यह एक उथला है, क्योंकि यह स्पष्ट नहीं है Clone का उपयोग कर से बचने के लिए है:
public static class CloneClass
{
/// <summary>
/// Clones a object via shallow copy
/// </summary>
/// <typeparam name="T">Object Type to Clone</typeparam>
/// <param name="obj">Object to Clone</param>
/// <returns>New Object reference</returns>
public static T CloneObject<T>(this T obj) where T : class
{
if (obj == null) return null;
System.Reflection.MethodInfo inst = obj.GetType().GetMethod("MemberwiseClone",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
if (inst != null)
return (T)inst.Invoke(obj, null);
else
return null;
}
}
फिर इसे पसंद का उपयोग वस्तु की गहरी प्रति बनाम बनाम।
कि यहां पर अधिक: http://blogs.msdn.com/b/brada/archive/2004/05/03/125427.aspx
एक बहुत ही आम समाधान एक वस्तु derialize को क्रमानुसार/करने के लिए BinaryFormatter वर्ग का उपयोग करें और नया उदाहरण लौटने के लिए, लेकिन चेतावनी के साथ वर्ग serializable होना चाहिए कि करने के लिए किया गया है:
https://stackoverflow.com/a/1213649/1212407
ऊपर मान लिया जाये कि, तुम कर सकते हो:
var clonedList = originaList.DeepClone();
देखें: http://stackoverflow.com/questions/222598/how-do-i-clone-a-generic-list-in-c –