Beispiele für AutoMapper-Anwendungen in C#

黄舟
Freigeben: 2018-05-15 11:37:47
Original
3599 Leute haben es durchsucht

Ich habe kürzlich eine interessante Sache namens AutoMapper entdeckt, die hauptsächlich Model in DTO konvertiert, den Daten mehr Aufmerksamkeit schenkt und Domänenobjekte angemessen kapselt, um das Verhalten von Domänenobjekten nicht übermäßig der Präsentationsebene auszusetzen.

Schauen wir uns zunächst einige Beispiele an, die Zuordnung zwischen den beiden Klassen.

Definieren Sie zunächst zwei Klassen, Source und DTOSource:

public class Source
    {
        public int Id { get; set; }
        public string Content { get; set; }
    }

    public class DTOSource
    {
        public int Id { get; set; }
        public string Content { get; set; }
    }
Nach dem Login kopieren

Die Felder Source und DTOSource sind genau gleich. Der Code ist sehr einfach.

Mapper.Initialize(x=>{
     x.CreateMap<Source,DTOSource>();
});

Source s = new Source{Id=1,Content="123"};

DTOSource dto = Mapper.Map<DTOSource>(s);
Nach dem Login kopieren

Der erste Schritt besteht darin, die Zuordnung zwischen Quelle und DTOSource festzulegen. Sehen Sie sich nach der Initialisierung einer Quellinstanz die Ausführungsergebnisse an:

Ausführung Abschließend können Sie sehen, dass die Daten in dto mit den Daten von s identisch sind, die zuvor initialisiert wurden. Dies ist so, als ob die beiden Klassenfeldnamen genau gleich sind Wie wäre es, wenn sich die Feldnamen in von denen in „Quelle“ unterscheiden? Tatsächlich ist es ganz einfach,

in ein wenig Code zu ändern:

Wir ändern den Feldnamen von „Inhalt“. DTOSource Change to Desc. Zu diesem Zeitpunkt müssen Sie beim Einrichten einer Zuordnungsbeziehung nur die Felder angeben:

1 Mapper.Initialize(x => {
2    x.CreateMap<Source, DTOSource>().ForMember(c=>c.Desc,q=> {
3       q.MapFrom(z => z.Content);
4      });
5 });
Nach dem Login kopieren

, um die laufenden Ergebnisse anzuzeigen; 🎜>Sie können sehen, dass die Ergebnisse mit denen des vorherigen Laufs identisch sind.

Das Zuordnen zweier Listen ist eigentlich sehr einfach. Es ist fast dasselbe wie der obige Code. Es handelt sich lediglich um eine kleine Änderung im letzten Schritt. Wie im folgenden Code gezeigt:

Sie können sehen, dass die anderen bis auf den letzten Codesatz fast identisch sind, außer dass im letzten Codesatz der Zieltyp in List< geändert wurde ;DTOSource> Das ist es. Schauen Sie sich die Laufergebnisse an:

Mapper.Initialize(x => {
                x.CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q =>
                {
                    q.MapFrom(z => z.Content);
                });
            });

            s.Add(new Source { Id = 1, Content = "123" });

            var dto = Mapper.Map<List<DTOSource>>(s);
Nach dem Login kopieren

Die Ergebnisse entsprechen den Erwartungen.

In tatsächlichen Projekten erfüllt diese Schreibweise definitiv nicht die Anforderungen. Im Allgemeinen wird eine Kapselung vorgenommen und ein neues SourceProfile von Profile geerbt:

Alle Zuordnungsbeziehungen können geschrieben werden In dieser Klasse müssen Sie sie nur einmal während der Programminitialisierung aufrufen:

Die vom Blogger verwendete AutoMapper-Version ist 6.1.1.0, da AutoMapper das Profil in Version 6.0 entfernt hat Die Schreibmethode unterscheidet sich ein wenig von der Version unter 6.0. Die Schreibmethode für Versionen unter 6.0 ist:
1  public SourceProfile()
2         {
3             base.CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q => {
4                 q.MapFrom(z => z.Content);
5             });
6         }
Nach dem Login kopieren

Einfach Profil erben und seine Konfiguration neu schreiben. Die aufrufende Methode unterscheidet sich nicht wesentlich von der oben genannten. Zu Mapper.Initialize können ein oder mehrere Profile hinzugefügt werden.
 
1
 Mapper.Initialize(x =>{  x.AddProfile<SourceProfile>(); });
Nach dem Login kopieren

In der Anwendung des MVC-Projekts können Sie Mapper.Initialize in eine Klasse kapseln

public class SourceProfile : Profile
    {
        protected override void Configure()
        {
            CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q => {
                q.MapFrom(z => z.Content);
            });
        }
    }
Nach dem Login kopieren

und es dann einmal in Global von MVC registrieren:

Das obige ist der detaillierte Inhalt vonBeispiele für AutoMapper-Anwendungen in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage