using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Automapper C# (Wie es für Entwickler funktioniert)
Chipego Kalinda
4. Januar 2024
Teilen Sie:
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
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.
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.
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.
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.
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 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)