如何将Activator.CreateInstance与列表一起使用<;T>;使用DataContractJsonSerializer反序列化json时

如何将Activator.CreateInstance与列表一起使用<;T>;使用DataContractJsonSerializer反序列化json时,json,list,windows-phone-7,activator,deserialization,Json,List,Windows Phone 7,Activator,Deserialization,我正在反序列化此json字符串: [{"id":"1"},{"id":"2"},{"id":"3"}] 表示项目的类是: [DataContract] public class MyClass { public MyClass() { this._dtcreate = new DateTime(); } private int _id; [DataMember(Name = "id")]

我正在反序列化此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的默认构造函数中,我为“\u dtcreate”设置了一个默认值

因此,我使用这段代码将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;
    }
publicstatict[]反序列化数组(字符串json)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(typeof(T[]);
MemoryStream ms=新的MemoryStream(Encoding.Unicode.GetBytes(json));
T[]gType=(T[])ser.ReadObject(ms);
返回gType;
}
反序列化json字符串时,在反序列化数组中找不到属性“\u dtcreate”的值

我认为DataContractJsonSerializer没有使用MyClass的默认构造函数

我能用这个吗

T obj = Activator.CreateInstance<T>();
T obj=Activator.CreateInstance();
要为属于数组“gType”的所有对象创建一个实例,以确保使用我的T类的dafault构造函数创建反序列化列表中的所有对象


非常感谢你

DataContract序列化程序将不会运行构造函数


相反,您应该将逻辑放入。

DateTime
是一个结构。你的构造器完全没用,谢谢!我设置了它。_dtcreate=new DateTime();按照我们的方法,工作很好。@Nicola:你根本不需要这么做。由于DateTime是一种值类型,它将自动设置为默认值。它不能为
null
。您可能正在查找
DateTime。现在
。属性“\u dtcreate”只是一个示例。我确实有一个字符串属性要设置为默认值。谢谢大家的支持!