遍历图层时,执行右侧>左侧分配作为填充模型的方法非常繁琐.例如:
employeeviewmodel.FirstName = employeeModel.FirstName; employeeviewmodel.LastName = employeeModel.LastName; ...
因此,我们可以构建一个使用反射来复制模型的Modelcopier:
var employeeviewmodel = Modelcopier.copy<Employeeviewmodel>(employeeModel);
这种技术大大简化了任务.但是,有一些事情令人非常不安:
>我们实际上已经失去了跟踪源和目标对象上属性的用法的能力.例如,查找FirstName属性的使用(在Resharper中)不会显示Modelcopier案例.
>如果我们更改源类或目标类的属性名称,我们可能会无意中导致运行时异常,因为我们可能没有意识到我们需要更新源类和目标类.
在光谱的一端,我们可以使用非常容易的反射,但是以可维护性为代价.光谱的另一端是非常繁琐但非常可维护的.
反射(简单和危险)< ----->直接分配(繁琐且可维护)
我很好奇是否有人发现了一种折衷方案,它提供了易于使用反射进行复制并具有直接分配的可维护性.
我们接受的一个解决方案是构建一个插件,该插件将生成扩展方法,以处理每种情况的属性分配.换句话说,构建一个可以处理繁琐部分的工具.
编辑:
请理解,此问题与使用哪种映射工具无关.我试图理解我们如何享受基于反射的映射的好处,同时还享受直接赋值(或属性映射契约)提供的可维护性的好处.
解决方法
原文地址:https://www.jb51.cc/aspnet/248882.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。