Si je veux faire la cartographie bidirectionnelle, dois-je créer deux mapping?AutoMapper mise en correspondance bidirectionnelle
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
Si je veux faire la cartographie bidirectionnelle, dois-je créer deux mapping?AutoMapper mise en correspondance bidirectionnelle
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
Oui, car si vous modifiez le type de certaines propriétés (par exemple DateTime -> chaîne), il n'est pas bidirectionnel (vous devrez indiquer à Automapper comment convertir la chaîne -> DateTime).
Oui, mais si vous vous trouvez faire souvent:
public static class AutoMapperExtensions
{
public static void Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
Mapper.CreateMap<TDestination, TSource>();
}
}
alors:
Mapper.CreateMap<A, B>().Bidirectional();
Grande idée Eric! J'ai ajouté une valeur de retour, donc le mappage inverse est également configurable.
public static class AutoMapperExtensions
{
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
}
Ceci est maintenant cuit dans AutoMapper
Mapper.CreateMap<SourceType, DestType>().ReverseMap();
Cela ne fonctionne pas avec les applications personnalisées, uniquement lorsque les noms de propriétés sont les mêmes dans les deux classes. –
est logique, mais ce serait bien la bibliothèque, il a essayé de faire la cartographie comme une convention, et vous pourriez désactiver explicitement si elle n'a pas été travail. Par exemple, je mappe les objets de domaine pour voir les modèles et la cartographie bidirectionnelle fonctionnerait parfaitement pour moi. –