Automapper des objets complexes

J'ai commencé à mettre en œuvre la présente;

Automapper, la cartographie d'un objet complexe mais pensé il doit y avoir une meilleure façon.

J'ai donc créé ce;

Mapper.CreateMap<StoreTransportWindow, CSVWindow>()
    .ForMember(dest => dest.DC, opt => opt.ResolveUsing(fa => fa.DC.number))
    .ForMember(dest => dest.Type, opt => opt.ResolveUsing(fa => fa.Type))
;

Mapper.CreateMap<Store, CSVStore>()
    .ForMember(dest => dest.StoreName, opt => opt.ResolveUsing(fa => fa.name))
    .ForMember(dest => dest.StoreNumber, opt => opt.ResolveUsing(fa => fa.number))
;

Maintenant, je voudrais utiliser le haut des mappages dans le primaire carte;

Mapper.CreateMap<Store, CSVLineObject>()
    .ForMember( dest => dest.store, opt => opt.ResolveUsing(/* This is where I'd like to use the above Store to  CSVStore mapping */)) 
;

Est-ce possible?

modifier

public class CSVStore
{
    public string StoreNumber { get; set; }
    public string StoreName { get; set; }
}

public class CSVWindow
{
    public string Type { get; set; }
    public string DC { get; set; }
    public string TPC { get; set; }

public class CSVLineObject
{
    public CSVStore store { get; set; }
    public List<CSVWindow> storeWindows { get; set; }
  • Pouvez-vous montrer ce que vous essayez de carte? (c'est à dire, qu'est-ce que CSVLineObject, et quel est le type de dest.store). Notez également qu'il semble que vous devriez être en utilisant MapFrom au lieu de ResolveUsing, et la deuxième propriété dans la première cartographie (dest.Type) est automatiquement adressé par la convention.
  • voir mon edit
  • Quoi de Store? J'essaie de savoir pourquoi vous êtes la cartographie Store à CSVLineObject au lieu de faire quelque chose comme CSVLineObject.store = Mapper.Map<Store, CSVStore>(store). Je suppose que si vous vouliez vous pourriez faire quelque chose comme Mapper.CreateMap<Store, CSVLineObject>().ForMember(dest => dest.store, opt => opt.MapFrom(src => Mapper.Map<Store, CSVStore>(src)));
  • Le magasin est tout simplement un autre objet. Il a un numéro, un nom et une collection de StoreTransportWindow. Je pense que les objets réels sont un peu hors de propos. Je suis de plus en plus après une idée de comment je peux utiliser une carte à l'intérieur d'une autre carte
  • Vous pouvez également trouver cela intéressant: stackoverflow.com/questions/14875075/...
InformationsquelleAutor griegs | 2013-04-19