【发布时间】:2009-05-30 04:09:48
【问题描述】:
我正在考虑将 PostSharp 用于实体到 DTO 和 DTO 到实体的映射器。为大约 100 个实体手动执行该任务将是维护的噩梦。我在 codeplex 上查看了 AutoMapper,但我认为开销在我的情况下可能是一个严重的问题,此外我觉得 PostSharp 可以让我对映射约定进行一些额外的控制。如果有人能分享这个问题之王的经验,那就太好了。
我认为的方向是这样的(如果这不可能,请有人告诉我):
我打算坚持一个类的方面将用内容填充接下来的两个方法:
EntityType EntityToDTO(DTOType DTO) {}
DTOType DTOToEntity(EntityType Entity) {}
第一种方法会根据 DTO 返回实体,第二种方法则相反。在我计划遍历每个属性的方面内,创建新目标并将属性的值分配给目标对象的对应项。这是否可以在编译时执行而无需任何运行时开销?
【问题讨论】:
-
为什么开销是个问题?你测量了吗?
-
你所说的可以通过简单的反思轻松完成。反射在性能上的评价很差,但老实说,它并没有你想象的那样对性能造成影响。在 .Net 框架中到处都使用反射来处理很多事情。除非你做的事情需要令人麻木的速度,否则反思应该很好地为你服务。从数据库和网络中获取信息所需的时间比一点点反射要慢得多。整个性能是最能感知的。