[DataContract]
public class A : List<B>
{
[DataMember]
public double TestA { get; set; }
}
[DataContract]
public class B
{
[DataMember]
public double TestB { get; set; }
}
Con il modello di cui sopra provo a serializzare il seguente oggetto:oggetto Serialize quando l'oggetto eredita dalla lista
List<A> list = new List<A>()
{
new A() { TestA = 1 },
new A() { TestA = 3 }
};
json = JsonConvert.SerializeObject(list);
//json: [[],[]]
Dove sono i miei due valori da TestA
? È possibile duplicare da this thread (XML), ma voglio sapere se non c'è alcuna opzione per includere tali valori impostando qualche opzione di serializzazione JSON?
Nota: la creazione di una proprietà List<B>
nella classe A
invece dell'ereditarietà non è un'opzione per me.
Per curiosità, perché stai facendo una lezione derivata dalla lista? È estremamente raro avere sempre bisogno di farlo. Ha molto più senso creare una classe che contenga sia una lista che una doppia anziché una lista di estensione. Vedi la domanda SO "[Perché non ereditare dall'elenco?] (Http://stackoverflow.com/questions/21692193/why-not-inherit-from-listt)" e l'ottima risposta di Eric Lippert. –
Si scopre che Json.NET non supporta le collezioni serialize come oggetti quando viene applicato '[DataContact]'. Vedi [Deserializzare un 'IEnumerable' con '[DataContract]' applicato non funziona] (http://stackoverflow.com/questions/35778811). –
dbc
@dbc Risposta interessante, noto che dici * Sarebbe stato possibile aggiungere membri se la tua classe implementasse 'ICollection' *, ma List lo implementa, un bug? –