.NET 8 Properties aus Interface-Hierarchien serialisieren
.NET 8 unterstützt das Serialisieren von Properties aus Interface-Hierarchien, inklusive aller Properties aller Interfaces, abhängig vom deklarierten Variablentyp.
.NET 8 unterstützt das Serialisieren von Properties aus Interface-Hierarchien. Das bedeutet, dass alle Properties aller Interfaces in der Hierarchie in die Serialisierung einbezogen werden. Entscheidend ist, wo Sie ansetzen.
Sehen wir uns die folgende Hierarchie als Beispiel an:
public interface IBase
{
public int Base { get; set; }
}
public interface IDerived : IBase
{
public int Derived { get; set; }
}
public interface IDerived2 : IDerived
{
public int Derived2 { get; set; }
}
public class Derived2Impl : IDerived2
{
public int Base { get; set; }
public int Derived { get; set; }
public int Derived2 { get; set; }
}
Übergeben Sie nun bei der Serialisierung eine Instanz von Derived2Impl, die in einer IDerived2-Variable gespeichert ist, werden alle 3 Properties der Hierarchie serialisiert.
IDerived2 value = new Derived2Impl { Base = 0, Derived = 1, Derived2 = 2 };
JsonSerializer.Serialize(value);
// Output: {"Derived2":2,"Derived":1,"Base":0}
Definieren Sie die Variable hingegen als IDerived, werden nur 2 Properties serialisiert.
IDerived value = new Derived2Impl { Base = 0, Derived = 1, Derived2 = 2 };
JsonSerializer.Serialize(value);
// Output: {"Derived":1,"Base":0}
Bei einer IBase-Variable wird wie erwartet nur eine Property serialisiert, obwohl das Objekt, das wir serialisieren, vom Typ Derived2Impl ist, alle 3 Interfaces implementiert und damit alle 3 Properties definiert sind.
IBase value = new Derived2Impl { Base = 0, Derived = 1, Derived2 = 2 };
JsonSerializer.Serialize(value);
// Output: {"Base":0}
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.