Chcielibyśmy móc serializować/deserializować json z/do klas C#, przy czym główna klasa ma instancję polimorficznego obiektu podrzędnego. Takie postępowanie jest łatwe przy użyciu ustawienia TypeNameHandling.Auto Json.Net. Jednak chcielibyśmy to zrobić bez pola "$ type".Serializacja typu Json.Net z polimorficznym obiektem potomnym
Pierwsza myśl polega na tym, aby zmienić nazwę "$ typ" na wybraną przez nas wartość, a wartość typu powinna być wylicznikiem, który prawidłowo mapowałby podtypy. Nie widziałem tego jako opcji, ale chętnie usłyszę, jeśli to możliwe.
Druga myśl była wzdłuż następujących linii ... Poniżej znajduje się pierwsze przejście na klasach, z klasą najwyższego poziomu posiadającą wskaźnik (SubTypeType) określający rodzaj danych zawartych w obiekcie podrzędnym (SubTypeData). Wkopałem się trochę w dokumentację Json.Net i próbowałem kilku rzeczy, ale nie miałem szczęścia.
Obecnie mamy pełną kontrolę nad definicją danych, ale po jej wdrożeniu są zablokowane.
public class MainClass
{
public SubType SubTypeType { get; set; }
public SubTypeClassBase SubTypeData { get; set; }
}
public class SubTypeClassBase
{
}
public class SubTypeClass1 : SubTypeClassBase
{
public string AaaField { get; set; }
}
public class SubTypeClass2 : SubTypeClassBase
{
public string ZzzField { get; set; }
}
To jest dokładnie to, co starałem się zrobić! – GaTechThomas
Dziękujemy! Ta nieskończona rekurencja zabijała mnie! –