Я десериализации эту JSon строку:Как использовать Activator.CreateInstance со списком <T> при Deserialize с DataContractJsonSerializer JSON
[{"id":"1"},{"id":"2"},{"id":"3"}]
Класс, который представляет элементы является:
[DataContract]
public class MyClass
{
public MyClass() {
this._dtcreate = new DateTime();
}
private int _id;
[DataMember(Name = "id")]
public int Id {get;set;}
private DateTime _dtcreate;
}
Заметим, что в конструктор по умолчанию MyClass я установил значение по умолчанию для «_dtcreate».
Итак, я использую этот код Deserialize JSON в массив 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;
}
Когда я десериализацию строки JSON, я не нашел в моем десериализованный массива свойства «_dtcreate» evalued.
Я думаю, что DataContractJsonSerializer не использует конструктор по умолчанию MyClass.
Могу ли я использовать
T obj = Activator.CreateInstance<T>();
создать экземпляр для всех объектов, принадлежащих к массиву «GType», чтобы заставить меня убедиться, что все объекты в моем списке deserialiced создаются с dafault конструктор моего T класса ?
Большое вам спасибо!
`DateTime` - это структура. Ваш конструктор совершенно бесполезен. – SLaks 2010-11-28 19:08:55