我正在使用AutoMapper
将一组Models
映射到ViewModels
。这一切都很好,但我必须一遍又一遍地为我创建的每个模型/视图模型做一件事。我必须将某个属性从(例如)String
映射到Int
。使用AutoMapper的默认映射
所以我现在映射看起来是这样的:
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
有没有办法告诉automapper,它应该始终映射SomeProperty
为String
,当它从我的Models
类映射到我的ViewModels
类?
反之亦然,是不是就有可能告诉automapper的财产SomeProperty
总是映射回一个Int32
当它从ViewModels
映射回Models
?
要清楚,您希望转换基于'ModelOne'的属性名称(或视图模型的反之亦然)?应该是'ModelOne.SomeProperty'还是名称为'SomeProperty'的任何属性? – wal
@wal ModelXXX和ModelXXXViewModel都具有相同的属性名称。它总是被称为'SomeProperty'。在'ModelXXX'中,这总是一个'Int32',在'ModelXXXViewModel'中它总是一个'String'。 - 因此,当我从'ModelXXX' *映射到*'ModelXXXViewModel'时,它应该**将**'SomeProperty'从'Int32'映射到'String'。 - 当我将**从ModelXXXViewModel *映射到* ModelXXX时,它总是应该将'SomeProperty'从'String'强制转换为'Int32'。 – w00
@ w00不是[自定义类型转换器](http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters)你在找什么? –