我正在使用AutoMapper
将一组Models
映射到ViewModels
。一切正常,但是对于我创建的每个模型/ viewmodel,我必须一遍又一遍地做一件事。我必须将某个属性从(例如)String
映射到Int
。
所以我的映射现在看起来像这样:
Mapper.CreateMap<ModelOne, ModelOneViewModel>()
.ForMember (d => d.SomeProperty, opt => opt.ResolveUsing(t => Convert.ToString(t.SomeProperty)));
Mapper.CreateMap<ModelOneViewModel, ModelOne>()
.ForMember (d => d.SomeProperty, opt => opt.ResolveUsing(t => Convert.ToInt32(t.SomeProperty)));
Mapper.CreateMap<ModelTwo, ModelTwoViewModel>()
.ForMember (d => d.SomeProperty, opt => opt.ResolveUsing(t => Convert.ToString(t.SomeProperty)));
// ... etc
有一种方法告诉自动映射器,当它从我的SomeProperty
类映射到我的String
类时,应该始终将Models
映射到ViewModels
吗?
反之亦然,当它从SomeProperty
映射回Int32
时,是否可以告诉自动映射器始终将属性ViewModels
映射回Models
?
根据您的评论请求,Custom Type Converters可能会派上用场。
我目前没有任何其他信息,所提到的文章看起来不错,解释得很好。