Frage

Der Versuch, einige Objekte Automap.
Quellobjekte haben Eigenschaften mit _ vor Namen, Zielobjekte - nicht. Ist es möglich, eine Erstellung von Karten zu implementieren, dass AutoMapper würde alle _properties zu Immobilien Karte drucken für alle Quellentypen.

class MyMapper<TFrom, TTo>{
    TTo PerformMap(TFrom fromObject){
        Mapper.CreateMap<From, To>(); // ???
        TTo result = Mapper.Map<From, To>(fromObject);
        //result.Id.ShouldBe(value from TFrom._Id);
        return result;
    }
}

class From
{
    public int _Id { get; set; }
    public string _Name { get; set; }
}

class To
{
    public int Id { get; set; }
    public string Name { get; set; }
}
War es hilfreich?

Lösung

Etwas, das ich vor kurzem zu AutoMapper hinzugefügt könnte Ihnen helfen - individuelle Namenskonventionen. Wenn Sie die Stamm (R107) überprüfen, schauen Sie sich um für INamingConvention. Gerade jetzt, ich habe zwei Namenskonventionen (Pascal und lower_case_underscore), aber es ist wirklich nur eine Frage der Bezifferung das Recht RegEx aus, um Sie gehen:

INamingConvention.cs

Im Moment sind Namenskonventionen global und profile-scoped. Da diese Funktion neu ist, gibt es keine Dokumentation andere als die Tests.

Andere Tipps

Dies ist, wie ich es tue,

Mapper.Initialize(cfg =>
        {
            cfg.RecognizeDestinationPrefixes(new []{"_"});
            cfg.RecognizePrefixes(new[] { "_" });

            cfg.CreateMap<To, From>().ReverseMap();
        });

Dazu könnten Sie eine benutzerdefinierte Zuordnung hinzufügen, um diesen speziellen Fall zu lösen:

Mapper.CreateMap<From, To>()
   .ForMember( dest => dest.Id, opt => opt.MapFrom( src => src._Id ) )
   .ForMember( dest => dest.Name, opt => opt.MapFrom( src => src._Name ) );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top