나는이 JSON 문자열 직렬화 복원 해요 :목록 <T>와 Activator.CreateInstance로 사용하는 방법 경우 DataContractJsonSerializer
이[{"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"에 대한 기본값을 설정했습니다.
그래서, T의 배열로 JSON을 역 직렬화이 코드를 사용하고 있습니다 :
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;
}
을 나는 재산 "_dtcreate"evalued 내 직렬화 된 배열에서 찾을 수 없습니다 JSON 문자열을 역 직렬화합니다.
DataContractJsonSerializer가 MyClass의 기본 생성자를 사용하지 않는다고 생각합니다.
나는 나를 deserialiced 내 목록의 모든 개체 내 T 클래스의 dafault 생성자로 생성되는 것을 보장하기 위해 배열 "gType"에 속하는 모든 개체에 대한 인스턴스를 만들 수
T obj = Activator.CreateInstance<T>();
를 사용할 수 ?
정말 고마워요!
'DateTime'은 구조체입니다. 귀하의 생성자는 완전히 쓸모가 없습니다. – SLaks