AutoMapper Carte Si Pas Nul, Sinon Personnalisé Convertir

Voici mon code:

Mapper.CreateMap<Foo, Foo2>()
   .ForMember(dest => dest.Bar, opt => opt.MapFrom(src => src.Bar == null ? new BarViewModel() : src.Bar))

Fondamentalement, "BarViewModel" a un sans paramètre ctor qui définit les propriétés de la classe.

Donc, je suis en train de dire à AutoMapper:

Si la valeur est null, alors utilisez le contractant pour la classe. sinon l'utilisation de la cartographie que vous avez en place

Ci-dessus est de me donner un compilateur C# erreur. Et je devine un cast ne serait pas plus efficace.

Donc, il y a un AutoMapper astuce pour le faire?

Pire des cas je pouvais enlever que la cartographie de cette propriété, et il suffit de faire:

var mapped = Mapper.Map<Foo,Foo2>(src);
if (mapped.Bar == null) mapped.Bar = new BarViewModel();

Mais c'est un peu laid.

Idées?

  • Qu'est-ce que l'erreur du compilateur, et pourquoi pensez-vous d'un plâtre ne marcherait pas?
InformationsquelleAutor RPM1984 | 2012-07-19