我用一个静态方法编写了一个类,它将属性值从一个对象复制到另一个对象.它并不关心每个对象的类型,只关心它们具有相同的属性.它做我需要的,所以我不是进一步设计它,但你会做出什么改进?
这是代码:
public class ShallowCopy { public static void Copy(From from, To to) where To : class where From : class { Type toType = to.GetType(); foreach (var propertyInfo in from.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance)) { toType.GetProperty(propertyInfo.Name).SetValue(to, propertyInfo.GetValue(from, null), null); } } }
我使用它如下:
EmployeeDTO dto = GetEmployeeDTO(); Employee employee = new Employee(); ShallowCopy.Copy(dto, employee);
Kent Boogaar.. 6
您的DTO是否可序列化?我希望如此,在这种情况下:
MemberInfo[] sm = FormatterServices.GetSerializableMembers(typeof(From)); object[] data = FormatterServices.GetObjectData(from, sm); FormatterServices.PopulateObjectMembers(to, sm, data);
但请注意,我并不同意这种一般方法.我希望有一份强有力的合同来复制每个DTO实施的DTO.
您的DTO是否可序列化?我希望如此,在这种情况下:
MemberInfo[] sm = FormatterServices.GetSerializableMembers(typeof(From)); object[] data = FormatterServices.GetObjectData(from, sm); FormatterServices.PopulateObjectMembers(to, sm, data);
但请注意,我并不同意这种一般方法.我希望有一份强有力的合同来复制每个DTO实施的DTO.