Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

"IgnoreIf" doesn't work for records

Offen
#1,007 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
57/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
csharp
Bereich
backend

Rechercherichtung

Beginne damit, die gemeldeten Mapper-Snippets in Mapster 10.0.11 zu reproduzieren und den generierten Ausdruck mit Version 7 zu vergleichen. Konzentriere dich auf die IgnoreIf-Behandlung für records und verifiziere die Korrektur mit einem Regressionstest, der zeigt, dass das generierte Mapping die Schlüsselprüfung berücksichtigt und BoxPost unverändert lässt, wenn der Schlüssel fehlt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Hi. In version 10.0.11, "IgnoreIf" doesn't work as it did in version 7... My mapper is written like this:

.Map(ask => ask.BoxPost, crm => crm.GetValue<AddressEntity, string?>(nameof(AddressEntity.BoxPost)))
.IgnoreIf((d, ask) => !d.ContainsKey<AddressEntity>(nameof(AddressEntity.BoxPost)), nameof(AddressEntity.BoxPost))

previously, in version 7, the following mapper code was generated:

.If (
    .Call ReForm.Ism.Core.Serialization.Extensions.JsonObjectExtension.ContainsKey(
        $var1,
        "BoxPost")
) {
    .Block() {
        $result.BoxPost = .Invoke (.Lambda #Lambda2<System.Func`3[System.String,System.Nullable`1[System.Decimal],System.Nullable`1[System.Decimal]]>)(
.Call ReForm.Ism.Core.Serialization.Extensions.JsonObjectExtension.GetValue(
    $var1,
    "BoxPost"),
$result.BoxPost)
    }
} .Else {
    .Default(System.Void)
};

and now I get this:

BoxPost = .Invoke (.Lambda #Lambda2<System.Func`2[System.String,System.Nullable`1[System.Decimal]]>)(.Call ReForm.Ism.Core.Serialization.Extensions.JsonObjectExtension.GetValue(
                    $var1,
                    "BoxPost")),

It turns out that the presence of "IgnoreIf" does not change anything.

Vorherrschende Sprache
C#
Sterne
5.2k
Forks
409
Ø Merge
3 T. 4 Std.
Gemergte PRs (30 T.)
3

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus MapsterMapper/Mapster

Alle Issues in MapsterMapper/Mapster

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.