Je désérialisation cette chaîne JSON:Comment utiliser Activator.CreateInstance avec liste <T> lorsque Deserialize JSON avec DataContractJsonSerializer
[{"id":"1"},{"id":"2"},{"id":"3"}]
La classe qui représente les articles est:
[DataContract]
public class MyClass
{
public MyClass() {
this._dtcreate = new DateTime();
}
private int _id;
[DataMember(Name = "id")]
public int Id {get;set;}
private DateTime _dtcreate;
}
Notez que dans le constructeur par défaut de MyClass I a défini une valeur par défaut pour "_dtcreate".
Donc, j'utilise ce code pour Désérialise JSON dans un tableau de T:
public static T[] DeserializeArray<T>(string json)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T[]));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
T[] gType = (T[])ser.ReadObject(ms);
return gType;
}
Quand je deserialize une chaîne JSON je ne trouve pas dans mon tableau désérialisé la propriété « _dtcreate » evalued.
Je pense que DataContractJsonSerializer n'utilise pas le constructeur par défaut de MyClass.
Puis-je utiliser
T obj = Activator.CreateInstance<T>();
pour créer une instance pour tous les objets appartenant au tableau « GTYPE » pour me faire assurer que tous les objets de ma liste deserialiced sont créés avec le constructeur dafault de ma classe T ?
Merci beaucoup!
'DateTime' est une structure. Votre constructeur est complètement inutile. – SLaks