左右 DTO 到对象 AutoMapper- C#
Left right DTO to object AutoMapper- C#
我们最近实施了自动映射器,目前正在寻求优化从 DTO 到模型的赋值。目前我们正在做类似
的事情
model.Property1 = dto.Property1;
model.SomePropertyType = dto.PropertyType;
model.Property2 = dto.Property2;
现在这对所有 Mapper 类 来说可能是一个相当长且重复的任务。
有没有办法在 AutoMapper 上简化这个?
如果您正在使用 Automapper
那么您是否没有定义地图(配置文件)?我相信,您可能已经定义了那些,所以请使用它们来指导 Automapper
如何将源对象映射到目标。
另一点 Automapper
也基于命名约定,因此如果源和目标中的 属性 名称相同,那么它会自动自动映射。所以你不必为它定义映射。要覆盖 属性(或其 name/type 不匹配)的映射,您可以使用 .ForMember
方法。
cfg.CreateMap<MyDTO, MyModel>()
.ForMember(destination => destination.PropertyType,
opts => opts.MapFrom(source => source.SomePropertyType ));
您可以在 here 阅读有关 Automapper
的信息。
现在在获取映射对象的代码中,像
一样使用它
Mapper.Map<MyModel>(object of MyDTO);
我们最近实施了自动映射器,目前正在寻求优化从 DTO 到模型的赋值。目前我们正在做类似
的事情model.Property1 = dto.Property1;
model.SomePropertyType = dto.PropertyType;
model.Property2 = dto.Property2;
现在这对所有 Mapper 类 来说可能是一个相当长且重复的任务。 有没有办法在 AutoMapper 上简化这个?
如果您正在使用 Automapper
那么您是否没有定义地图(配置文件)?我相信,您可能已经定义了那些,所以请使用它们来指导 Automapper
如何将源对象映射到目标。
另一点 Automapper
也基于命名约定,因此如果源和目标中的 属性 名称相同,那么它会自动自动映射。所以你不必为它定义映射。要覆盖 属性(或其 name/type 不匹配)的映射,您可以使用 .ForMember
方法。
cfg.CreateMap<MyDTO, MyModel>()
.ForMember(destination => destination.PropertyType,
opts => opts.MapFrom(source => source.SomePropertyType ));
您可以在 here 阅读有关 Automapper
的信息。
现在在获取映射对象的代码中,像
一样使用它Mapper.Map<MyModel>(object of MyDTO);