public class MyMVCProfile : Profile
{
public override string ProfileName
{
get { return "MyMVCProfile"; }
}
protected override void Configure()
{
Mapper.CreateMap<ColumnInIdeaModel, ColumnInIdea>().ForMember(dest => dest.DataTypeId,
m => m.ResolveUsing(ResolveColumnInIdeaModel));
}
private object ResolveColumnInIdeaModel(ColumnInIdeaModel c)
{
switch (c.MyDataTypeId)
{
case DataTypeId.Money: return 0;
case DataTypeId.Number: return 1;
case DataTypeId.Datetime: return 2;
case DataTypeId.LongText: return 3;
case DataTypeId.ShortText: return 4;
case DataTypeId.IdeaType: return 5;
case DataTypeId.Status: return 6;
}
return null;
}
}
此时,对于指定的字段,使用指定的方法进行转换。剩下的字段,按同名的字段进行匹配。这里的Profile类只是一个转换器。这个转换器要加入到Mapper中才能够使用。
Mapper.Configuration.AddProfileThreadSafe(Activator.CreateInstance(typeof(MyMVCProfile)) as Profile);
现在,使用Mapper.Map<Entity>(Model m)就能返回需要的转换后的实体了。