2 回答

TA贡献1828条经验 获得超13个赞
我强烈推荐使用 Automapper,因为它非常简单易用。在 Automapper 中,默认情况下会映射具有相同名称的字段,并且需要最少的配置。您要实现的映射将按如下方式完成:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Message, MessageViewModel>();
});
在集合的情况下,Automapper 可以映射以下内容,前提是已为其数据类型定义了配置:
IEnumerable
收藏
列表
列表
数组
由于在您的情况下已经为列表的数据类型提供了映射,因此不需要进一步配置。
如果您想映射具有不同名称的字段,或者您想在此过程中进行一些基本级别的验证,您可以使用以下语法来定义配置:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Message, MessageViewModel>()
.ForMember(destination => destination.SomeDestinationField, map => map.MapFrom(source => source.SomeSourceFieldWithDifferentName))
.ForMember(destination => destination.SomeDestinationField, map => map.MapFrom(source => source.SomeSourceField ?? SomeDefaultValue));
});
然后我们可以使用 MapperConfiguration 对象来初始化 Mapper 并执行我们的映射如下:
SourceClass SourceObject = new SourceClass();
// Populate SourceObject with values
var mapper = config.CreateMapper();
DesitnationClass DestinationObject = mapper.Map<DesitnationClass>(SourceObject);
我建议阅读这些文档。
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报