EINFÜHRUNG · MAPPEReQuantic.MappereQuantic.Mapper bildet ein Objekt auf ein anderes ab, ohne Reflection: der Abbildungscode entsteht beim Bauen, sodass genau das läuft, was Sie sonst von Hand geschrieben hätten.
Überblick
Komplexe Eigenschaftsabbildungen, Aggregationen und eigene Transformationen entstehen über Roslyn-Quellgeneratoren statt zur Laufzeit.Eigenschaftsaggregation, Typprüfung beim Bauen, Konfiguration per Attribut und Unterstützung für Dependency Injection sind Standard.
Installieren
shell
dotnet add package eQuantic.Mapper
Was sie tut
Keine ReflectionJede Abbildung entsteht beim Bauen, durch einen Roslyn-Quellgenerator.
EigenschaftsaggregationFassen Sie mehrere Quelleigenschaften zu einer Zieleigenschaft zusammen, mit über einem Dutzend Aggregationsarten.
TypsicherheitDie Typen werden beim Bauen geprüft, sodass eine Abweichung ein Kompilierfehler ist und keine Überraschung im Betrieb.
Schnell durch BauweiseGenerierter Code mit möglichst wenigen Allokationen, so geformt, dass der JIT ihn einbetten kann.
Konfiguration per AttributDie Abbildung steht dort, wo die Eigenschaft steht, und es gibt keinen Standardcode, den man mitpflegen muss.
Asynchrone AbbildungVollständige asynchrone Unterstützung, CancellationToken inbegriffen.
Keine ReflectionJede Abbildung entsteht beim Bauen, durch einen Roslyn-Quellgenerator.
EigenschaftsaggregationFassen Sie mehrere Quelleigenschaften zu einer Zieleigenschaft zusammen, mit über einem Dutzend Aggregationsarten.
TypsicherheitDie Typen werden beim Bauen geprüft, sodass eine Abweichung ein Kompilierfehler ist und keine Überraschung im Betrieb.
Schnell durch BauweiseGenerierter Code mit möglichst wenigen Allokationen, so geformt, dass der JIT ihn einbetten kann.
Konfiguration per AttributDie Abbildung steht dort, wo die Eigenschaft steht, und es gibt keinen Standardcode, den man mitpflegen muss.
Asynchrone AbbildungVollständige asynchrone Unterstützung, CancellationToken inbegriffen.
Schnellstart
Die Modelle deklarieren — Die Zieleigenschaft sagt, woher sie kommt und wie mehrere Quellen in ihr zusammenfließen.
C#
public class UserSource{ public string FirstName { get; set; } = string.Empty; public string LastName { get; set; } = string.Empty; public decimal Salary { get; set; } public decimal Bonus { get; set; }} public class UserDestination{ [MapFrom(typeof(UserSource), new[] { nameof(UserSource.FirstName), nameof(UserSource.LastName) }, MapperPropertyAggregation.ConcatenateWithSpace)] public string FullName { get; set; } = string.Empty; [MapFrom(typeof(UserSource), new[] { nameof(UserSource.Salary), nameof(UserSource.Bonus) }, MapperPropertyAggregation.Sum)] public decimal TotalIncome { get; set; }}
Den Mapper generieren — Ein Attribut an einer partiellen Klasse, und der Generator schreibt die Abbildung.
C#
[Mapper(typeof(UserSource), typeof(UserDestination))]public partial class UserMapper : IMapper{} var builder = WebApplication.CreateBuilder(args);builder.Services.AddMappers(); var mapper = mapperFactory.GetMapper<UserSource, UserDestination>()!;var result = mapper.Map(userSource);
Mehrere Quellen aggregieren — Dasselbe Attribut nimmt für jeden Fall eine andere Aggregation.
C#
public class PersonDestination{ [MapFrom(typeof(PersonSource), new[] { nameof(PersonSource.FirstName), nameof(PersonSource.LastName) }, MapperPropertyAggregation.ConcatenateWithSpace)] public string FullName { get; set; } = string.Empty; [MapFrom(typeof(PersonSource), new[] { nameof(PersonSource.Salary), nameof(PersonSource.Bonus) }, MapperPropertyAggregation.Sum)] public decimal TotalIncome { get; set; } [MapFrom(typeof(PersonSource), new[] { nameof(PersonSource.Salary), nameof(PersonSource.Bonus) }, MapperPropertyAggregation.Max)] public decimal HighestComponent { get; set; }}
Öffentliche Schnittstelle
NAMENSRAUM
ÖFFENTLICHE SCHNITTSTELLE
MapFromAttribute
Deklariert, woher der Wert einer Zieleigenschaft kommt und wie die Quellen aggregiert werden.
MapperAttribute
Markiert die partielle Klasse, die der Generator mit einer Abbildung zwischen zwei Typen füllt.
MapperPropertyAggregation
Die Aggregationsarten: keine, verketten, Summe, Maximum, Minimum, Durchschnitt und weitere.
Lesen Sie lieber Code?
Jedes Paket ist MIT-lizenziert und öffentlich, und die Beispiele sind zum Kopieren bereit.
Bereit, etwas Echtes zu liefern?
Buchen Sie ein 30-minütiges Erstgespräch. Innerhalb einer Stunde sagen wir Ihnen, ob wir der richtige Partner sind — oder wer es ist.
Bereit, etwas Echtes zu liefern?
Buchen Sie ein 30-minütiges Erstgespräch. Innerhalb einer Stunde sagen wir Ihnen, ob wir der richtige Partner sind — oder wer es ist.
eQuantic
Wir entwickeln Produkte, Bibliotheken und Software auf Unternehmensniveau, die weltweit skalieren. Ein Technologielabor mit Sitz in Portugal.
eQuantic
Wir entwickeln Produkte, Bibliotheken und Software auf Unternehmensniveau, die weltweit skalieren. Ein Technologielabor mit Sitz in Portugal.
eQuantic
Wir entwickeln Produkte, Bibliotheken und Software auf Unternehmensniveau, die weltweit skalieren. Ein Technologielabor mit Sitz in Portugal.
© 2026 eQuantic Tech. Alle Rechte vorbehalten.