.NET-HILFE

Automapper C# (Wie es für Entwickler funktioniert)

Automapper ist eine vielseitige und leistungsstarke Bibliothek in C#, die das Objekt-zu-Objekt-Mapping erleichtert und die Übertragung von Daten zwischen komplexen Objektmodellen einfacher und wartbarer macht. In diesem Artikel werden wir untersuchen, wie Automapper Eigenschaften effizient zuordnen, komplexe Objektmodelle reduzieren und mit verschiedenen Objekttypen wie Benutzerdomänenobjekten und Datenübertragungsobjekten arbeiten kann.

Einführung in Automapper

Automapper in C# ist ein Objekt-Objekt-Mapper, ein Tool, das die Umwandlung und Übertragung von Daten zwischen verschiedenen Objekttypen vereinfacht. Dies ist besonders nützlich in Szenarien, die Dateneinheiten und deren Umwandlung in Data Transfer Objects (DTOs) betreffen.

Hauptmerkmale von Automapper

Vereinfachung des Codes: Automapper reduziert drastisch den Bedarf an manuellem Code, indem es die Zuordnung von Eigenschaften automatisiert, wodurch Fehler vermieden und Zeit gespart wird.

Flexibilität in der Konfigurationszuordnung: Automapper ermöglicht eine detaillierte Anpassung von Zuordnungskonfigurationen und passt sich einer Vielzahl von Zuordnungsszenarien an.

Leistungsfähigkeit: Die Bibliothek ist darauf ausgelegt, große und komplexe Objektmodelle ohne signifikante Leistungseinbußen zu verarbeiten.

Erste Schritte mit Automapper

Um Automapper nutzen zu können, muss er zunächst über die Paketmanager-Konsole installiert werden, eine Komponente der Entwicklungsumgebung, die die Verwaltung von Softwarepaketen erleichtert.

Installation über die Paketmanager-Konsole

Sie können Automapper ganz einfach in Ihrem Projekt installieren, indem Sie einen einfachen Befehl in der Konsole Ihres Paketmanagers ausführen:

Install-Package IronPdf

Einrichten der grundlegenden Mapping-Konfiguration

Der grundlegende Schritt bei der Verwendung von Automapper besteht darin, die Mapping-Konfiguration zu definieren. Dies beinhaltet die Angabe, wie die Eigenschaften des Eingabeobjekts (Quelle) auf das Ausgabeobjekt (Ziel) übertragen werden sollen.

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<SourceClass, DestinationClass>();
});
IMapper mapper = config.CreateMapper();
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<SourceClass, DestinationClass>();
});
IMapper mapper = config.CreateMapper();
Dim config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of SourceClass, DestinationClass)()
End Sub)
Dim mapper As IMapper = config.CreateMapper()
$vbLabelText   $csharpLabel

Erweiterte Mapping-Techniken mit Automapper

Die Möglichkeiten von Automapper gehen weit über die einfache Zuordnung von Eigenschaften zu Eigenschaften hinaus. Es kann auch kompliziertere Szenarien bewältigen.

Abflachung komplexer Objektmodelle

Eine der Stärken von Automapper ist seine Fähigkeit, komplexe Objektmodelle zu reduzieren. Diese Funktion ist besonders nützlich, wenn es um verschachtelte Objekte geht, da sie die Zuordnung dieser verschachtelten Eigenschaften zu einer flachen Zielklassenstruktur ermöglicht.

Vielseitige Handhabung von Objekttypen

Automapper ist in der Lage, verschiedene Objekttypen zuzuordnen, einschließlich Benutzerdomänenobjekten, DTOs und sogar Ansichtsmodellen, und bietet somit eine vielseitige Lösung für unterschiedliche Datentransferanforderungen.

Praktische Anwendungsbeispiele

Um den Nutzen von Automapper besser zu verstehen, lassen Sie uns einige praktische Beispiele untersuchen.

Beispiel 1: Einfaches Mapping

Stellen Sie sich ein Szenario vor, in dem wir Eigenschaften von einer Benutzerentität einem Benutzer-DTO zuordnen müssen:

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
public class UserDTO
{
    public string FullName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<User, UserDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.FirstName + " " + src.LastName));
});
IMapper mapper = config.CreateMapper();
public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
public class UserDTO
{
    public string FullName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<User, UserDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.FirstName + " " + src.LastName));
});
IMapper mapper = config.CreateMapper();
Public Class User
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Address() As String
	Public Property City() As String
End Class
Public Class UserDTO
	Public Property FullName() As String
	Public Property Address() As String
	Public Property City() As String
End Class
' Mapping Configuration
Private config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of User, UserDTO)().ForMember(Function(dest) dest.FullName, Function(opt) opt.MapFrom(Function(src) src.FirstName & " " & src.LastName))
End Sub)
Private mapper As IMapper = config.CreateMapper()
$vbLabelText   $csharpLabel

Beispiel 2: Fortgeschrittenes Mapping mit komplexen Objekten

In einem komplexeren Szenario wollen wir ein Auftragsobjekt mit verschachtelten Benutzerdetails einem vereinfachten Auftrags-DTO zuordnen:

public class Order
{
    public User OrderedBy { get; set; }
    // Other properties...
}
public class OrderDTO
{
    public string FullName { get; set; }
    // Other properties...
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<Order, OrderDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.OrderedBy.FirstName + " " + src.OrderedBy.LastName));
});
IMapper mapper = config.CreateMapper();
public class Order
{
    public User OrderedBy { get; set; }
    // Other properties...
}
public class OrderDTO
{
    public string FullName { get; set; }
    // Other properties...
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<Order, OrderDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.OrderedBy.FirstName + " " + src.OrderedBy.LastName));
});
IMapper mapper = config.CreateMapper();
Public Class Order
	Public Property OrderedBy() As User
	' Other properties...
End Class
Public Class OrderDTO
	Public Property FullName() As String
	' Other properties...
End Class
' Mapping Configuration
Private config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of Order, OrderDTO)().ForMember(Function(dest) dest.FullName, Function(opt) opt.MapFrom(Function(src) src.OrderedBy.FirstName & " " & src.OrderedBy.LastName))
End Sub)
Private mapper As IMapper = config.CreateMapper()
$vbLabelText   $csharpLabel

Mit Version 9.0 hat AutoMapper den Wechsel von einer statischen API (Mapper.Initialize) zu einer instanzbasierten API vollzogen. Diese Änderung erhöht die Flexibilität und eignet sich besser für moderne Anwendungen, insbesondere für solche, die Dependency Injection verwenden. Wenn Sie mit älteren Versionen als 9.0 arbeiten, ist der statische API-Ansatz anwendbar. Für neuere Versionen wird jedoch empfohlen, die instanzbasierte API wie in den obigen Beispielen beschrieben zu verwenden.

Überblick über die Iron Software Suite

Die Iron Software Suite for .NET ist ein leistungsstarkes Paket mit einer Reihe von Bibliotheken, die jeweils einem bestimmten Zweck dienen. Es umfasst Funktionen wie das Erstellen, Lesen und Bearbeiten von PDFs, die Konvertierung von HTML in PDF und die Verarbeitung von Bildern in Text in mehreren Sprachen. Diese Suite deckt verschiedene Entwicklungsbedürfnisse ab und ist damit eine vielseitige Ergänzung für jedes C#-Projekt.

Hauptkomponenten der Iron Software Suite

  1. IronPDF for PDF Management: Diese Komponente ermöglicht es Entwicklern, PDFs zu erstellen, zu lesen, zu bearbeiten und zu signieren. Es bietet auch die Möglichkeit, HTML in PDF zu konvertieren, eine Funktion, die besonders bei der Erstellung von Berichten oder Dokumentationen aus webbasierten Daten nützlich sein kann.

    Automapper C# (Wie es für Entwickler funktioniert): Abbildung 1 - IronPDF for .NET: Die C# PDF-Bibliothek

  2. IronXL Excel-Dateiverarbeitung: IronXL erleichtert die Arbeit mit Excel-Dateien, ohne dass Office Interop erforderlich ist, und optimiert so die Aufgaben der Datenmanipulation und -analyse.

    Automapper C# (Wie es für Entwickler funktioniert): Abbildung 2 - IronXL for .NET: Die C# Excel-Bibliothek

  3. IronOCR für Textextraktion: Es ermöglicht die Textextraktion aus Bildern und unterstützt eine Vielzahl von 127 Sprachen, was es für internationale Projekte äußerst vielseitig macht.

    Automapper C# (Wie es für Entwickler funktioniert): Abbildung 3 - IronOCR for .NET: Die C# OCR-Bibliothek

  4. IronBarcode für QR- und Barcode-Unterstützung: Eine Bibliothek, die das Lesen und Schreiben von QR-Codes und Barcodes ermöglicht, um die Fähigkeiten für Bestandsverwaltung, Verfolgung und andere verwandte Aufgaben zu erweitern.

    Automapper C# (Wie es für Entwickler funktioniert): Abbildung 4 - IronBarcode for .NET: Die C#-Barcode-Bibliothek

Komplementarität mit Automapper

Während Automapper hervorragend darin ist, Eigenschaften zwischen verschiedenen Objektmodellen in C# abzubilden, erweitern die Bibliotheken von Iron Software die Funktionalität, indem sie Werkzeuge zur Handhabung verschiedener Datenformate und -typen bieten. Zum Beispiel könnte, nachdem Automapper verwendet wurde, um ein Benutzer-Domänenobjekt in ein DTO zu transformieren, IronPDF genutzt werden, um einen umfassenden Bericht im PDF-Format zu erstellen. Ebenso können Daten, die mit Automapper extrahiert oder transformiert wurden, mit IronXL for Excel file operations weiter bearbeitet oder analysiert werden.

Schlussfolgerung

Automapper ist ein unschätzbares Werkzeug für C#-Entwickler, das die Aufgabe der Zuordnung zwischen Objekten vereinfacht. Seine robusten Fähigkeiten beim Mapping von Eigenschaften, bei der Handhabung komplexer Objektmodelle und bei der Bereitstellung anpassbarer Mapping-Konfigurationen machen es zu einem unverzichtbaren Werkzeug für eine effiziente Softwareentwicklung. Das Verständnis der Feinheiten von Objektmodellen und der Konfiguration von Automapper zur Anpassung an spezifische Anforderungen ist entscheidend für die Maximierung des Potenzials in jedem Projekt.

Das Iron Suite von Iron Software bietet verschiedene Lizenzierungsoptionen, darunter eine kostenlose Testversion von Iron Software, um unterschiedliche Projektanforderungen zu erfüllen. Die Lizenzen sind in Lite, Plus und Professional gestaffelt, um verschiedenen Teamgrößen gerecht zu werden und umfassende Supportfunktionen zu bieten. Durch die Integration dieser Suite mit Automapper können C#-Projekte erheblich verbessert werden, da zusätzliche Funktionen für die Datenverarbeitung und Dokumentenmanipulation zur Verfügung stehen.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
.NET Aspire (Wie es für Entwickler funktioniert)
NÄCHSTES >
C# String Split (Wie es funktioniert für Entwickler)