Polymorphic mapping with collections maps only base class properties
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne mit dem Reproducer in issue #793 und vergleiche das Ergebnis von Adapt für ein einzelnes Element mit dem Ergebnis von Adapt<BaseDto[]> für eine Collection, einschließlich der optionalen Include-Konfiguration. Als abgeschlossen gilt die Aufgabe, wenn das Mapping der Collection ExtraProperty und OtherExtraProperty für die abgeleiteten Laufzeittypen bewahrt, ohne diese explizite Konfiguration zu erfordern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
This might be related to #776. I have a class hierarchy and a base class DTO that combines all possible properties. When mapping a single item cast to the base class - derived properties are mapped, however, when mapping a collection of the base class items - derived properties are ignored. This doesn't seem like a consistent behavior to me and now it must be fixed with explicit map config.
var items = new List<Base>
{
new DerivedOne
{
Id = Guid.NewGuid(),
ExtraProperty = "A",
Property = "a",
},
new DerivedTwo
{
Id = Guid.NewGuid(),
Property = "b",
OtherExtraProperty = "B",
}
};
// TypeAdapterConfig<Base, BaseDto>.NewConfig()
// .Include<DerivedOne, BaseDto>()
// .Include<DerivedTwo, BaseDto>();
// Here ExtraProperty and OtherExtraProperty are not mapped unless the config above is present
var mappedResultOne= b.Adapt<BaseDto[]>();
// Here OtherExtraProperty is mapped.
var mappedResultTwo = b[1].Adapt<BaseDto>();
public abstract class Base
{
public Guid Id { get; set; }
public required string Property { get; set; }
public abstract string Type { get; protected set; }
}
public class DerivedOne : Base
{
public required string ExtraProperty { get; set; }
public override string Type { get; protected set; } = "DerivedOne";
}
public class DerivedTwo : Base
{
public required string OtherExtraProperty { get; set; }
public override string Type { get; protected set; } = "DerivedTwo";
}
public record BaseDto
{
public Guid Id { get; init; }
public required string Property { get; init; }
public string? ExtraProperty { get; init; }
public string? OtherExtraProperty { get; init; }
public required string Type { get; init; }
}
- Vorherrschende Sprache
- C#
- Sterne
- 5.2k
- Forks
- 411
- Ø Merge
- 1 T. 8 Std.
- Gemergte PRs (30 T.)
- 4
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus MapsterMapper/Mapster
-
.NET MatrixOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
MapsterMapper/Mapster#1003 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 58/100
MapsterMapper/Mapster#1024 · 1 Kommentar ·
-
[Mapster Tool] Add support for global:: to disambiguate type names in generated mappersEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenimprovement
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 65/100
MapsterMapper/Mapster#1020 · 5 Kommentare ·
-
Mapster.Tool - PropertySettingBuilder.Map(member, mapFunc, targetPropertyName) method is not working as expected!Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
MapsterMapper/Mapster#1017 · 6 Kommentare ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 57/100
MapsterMapper/Mapster#1007 · 5 Kommentare ·
Alle Issues in MapsterMapper/Mapster
Ähnliche Issues
-
area-multitenancy area-security p1-recommended priority-high technical-debt
Schwierigkeit 2/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
kind/enhancement Provider Upgrade pulumi/pulumi-azure R1 Task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
pulumi/pulumi-azure#3669 ·
-
[BUG] FromCString causes 1 byte OOB read in native codeEvtl. vergeben @mattleibow hat das vor 1 Tag übernommen. Offentype/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
mono/SkiaSharp#5426 · 1 Reaktion · 2 zugewiesene Personen ·
Maintainer antworten meist innerhalb von 1 Tag
-
webclient does not startEvtl. vergeben @PawelTroka hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
PawelTroka/Computator.NET#257 ·
Maintainer antworten meist innerhalb von 1 Tag