2009-11-04 101 views
3

是否可以在精简框架中深入克隆对象?我希望使用IClonable和memberwiseclone(),但是这只能执行浅拷贝。精简框架中的深入克隆

有关如何执行此操作的任何想法,请使用C#2.0?

非常感谢,

莫里斯

回答

6

我已经让我的对象序列化[Serializable()]和使用下面的方法实现了深刻的对象复制。

public static ObjectType CopyObject<ObjectType>(ObjectType oObject) 
{ 
    XmlSerializer oSeializer = null; 

    // Creates the serializer 
    oSeializer = new XmlSerializer(oObject.GetType()); 

    //Use the stream 
    using (MemoryStream oStream = new MemoryStream()) 
    { 
    // Serialize the object 
    oSeializer.Serialize(oStream, oObject); 

    // Set the strem position 
    oStream.Position = 0; 

    // Return the object 
    return (ObjectType)oSeializer.Deserialize(oStream); 
    } 
} 
+0

伙计们, 谢谢你的建议,大加赞赏。 Cheers Morris – Morrislgn 2009-11-06 08:46:06

+0

只要小心,XML序列化不会处理别名或循环。 – 2011-10-17 22:18:30