对象的深拷贝

    技术2022-05-11  29

    今天遇到一个问题,如何深层拷贝一个对象?

     

    想了一个方法,前提是所有相关类型都必须具有公共、无参、实例构造函数。

     

    public object DeepCloneObject(object obj) { object newObj = Activator.CreateInstance(obj.GetType()); foreach (FieldInfo fi in obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) { if (fi.FieldType.IsValueType) fi.SetValue(newObj, fi.GetValue(obj)); else fi.SetValue(newObj, DeepCloneObject(fi.GetValue(obj))); } return newObj; }

     

    不知道还有没有更好的方法。(^-^)


    最新回复(0)