我有这些类: public class Person { public int Id{ get; set ;} public string FirstName{ get; set ;} public string LastName{ get; set ;} } public class PersonView { public int Id{ get; set ;} public string FirstName{ get; set ;} public string LastName{ get; set ;} } 我定义了这个: Mapper.CreateMap<Person, PersonView>(); Mapper.CreateMap<PersonView, Person>() .ForMember(person => person.Id, […]
忽略ResolveUsing重载,只看这两个方法: void ResolveUsing(Func<TSource, object> resolver); void MapFrom<TMember>(Expression<Func<TSource, TMember>> sourceMember); 这两者之间的主要区别似乎是ResolveUsing采用Func<TSource, object> ,而MapFrom采用Expression<Func<TSource, TMember>> 。 然而,在实际使用lambdaexpression式的客户端代码中,它们似乎是可以互换的: Mapper.CreateMap<SourceType, DestType>() // uses ResolveUsing .ForMember(d => d.DestPropX, o => o.ResolveUsing(s => s.SourcePropY)); Mapper.CreateMap<SourceType, DestType>() // uses MapFrom .ForMember(d => d.DestPropX, o => o.MapFrom(s => s.SourcePropY)); 那么上述两个select之间的区别究竟是什么呢? 一个比另一个快吗? 是一个比另一个更好的select,如果是的话,何时/为什么?