当前位置:  开发笔记 > 编程语言 > 正文

你会如何改进这种浅层复制课程?

如何解决《你会如何改进这种浅层复制课程?》经验,为你挑选了1个好方法。

我用一个静态方法编写了一个类,它将属性值从一个对象复制到另一个对象.它并不关心每个对象的类型,只关心它们具有相同的属性.它做我需要的,所以我不是进一步设计它,但你会做出什么改进?

这是代码:

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.



1> Kent Boogaar..:

您的DTO是否可序列化?我希望如此,在这种情况下:

MemberInfo[] sm = FormatterServices.GetSerializableMembers(typeof(From));
object[] data = FormatterServices.GetObjectData(from, sm);
FormatterServices.PopulateObjectMembers(to, sm, data);

但请注意,我并不同意这种一般方法.我希望有一份强有力的合同来复制每个DTO实施的DTO.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有