2011-06-20 13 views
5

gelen Çöz kaynak özellik adıAutomapper: Aşağıdaki sınıflar Verilen automapped nesne

Mapper.CreateMap<User, UserDto>() 
      .ForMember(destination => destination.FirstName, 
      options => options.MapFrom(source => source.Name.FirstName)) 

bir kaynak özelliğin adını çözümlemek için mümkün mü hedef nesne üzerinde verilen özelliği:

gibi bir şey:

Assert.AreEqual(GetSourcePropertyName<User, UserDto>("FirstName"), "Name.FirstName") 

cevap

7

MapFrom() bir lambda aldığından, hedef özelliğinin herhangi bir şeye eşlenmiş olması mümkündür. İstediğiniz herhangi bir lambda kullanabilirsiniz. Şunu bir düşünün: Eğer basit özellik erişimci lambdas yapmak zorunda değiliz Çünkü

.ForMember(
    destination => destination.FullName, 
    options => options.MapFrom(source => source.Name.FirstName + " " + source.Name.LastName) 
); 

, basit bir özellik adı dize kaynak ifadesini azaltamaz.

Eğer MapFrom() öğesi Expression<Func<TSource, TMember>> aldıysa, ifadeyi bir dizgeye dönüştürmek mümkün olurdu, ancak şu anda yazıldığı şekilde yapılamaz.