1

我有一个具有许多属性的对象,我需要在每次迭代中创建该对象的副本,以便所有属性都复制到具有最后设置值的新生对象中。(我不能一个一个地复制所有属性和它们的值,因为我的对象实际上是一个自定义的用户控件,它有很多属性,我不知道所有的属性!)

4

1 回答 1

2

您可以使用此扩展方法复制所有对象字段和属性。尝试复制引用类型的字段和属性时可能会出现一些错误。

public static T CopyObject<T>(this T obj) where T : new()
        {
            var type = obj.GetType();
            var props = type.GetProperties();
            var fields = type.GetFields();
            var copyObj = new T();
            foreach (var item in props)
            {
                item.SetValue(copyObj, item.GetValue(obj));
            }
            foreach (var item in fields)
            {
                item.SetValue(copyObj, item.GetValue(obj));
            }
            return copyObj;
        }

于 2017-09-03T08:09:25.953 回答