2015-01-15 2 views
1

json api를 나타내는 클래스가 있습니다. 전환 된 열거 형을 사용하여 객체를 채우는 방법을 선택하는 생성자를 만들었습니다. 하나는 최소한의 json 객체를위한 것입니다. 다른 것은 파일에서 읽음으로써 등록 정보를 채우기위한 것입니다. 그래서 파일을 문자열로 읽고 deserialize 할 수 있습니다. 그러나 속성을 채우기 위해 다음에 무엇을해야합니까?C# deserialized json의 생성자?

// this code is in the constructor 
string text = System.IO.File.ReadAllText(fileName); 
this.???? = JsonConvert.DeserializeObject<MyObject>(text); // MyObject is the object the constructor is working on 

개체의 속성에 역 직렬화 된 텍스트를 캐스팅 할 수 있습니까?

아마 이미 물어볼 수있는 것을 묻는 것에 대해 유감스럽게 생각합니다.하지만 질문을 제대로 (심지어 혼자 찾고 있는지) 묻는 지 모르겠습니다. 덕분에 ...

+0

이것은 'MyObject'의 생성자입니까? 또는'MyObject'는이 생성자가 어떤 클래스에서 왔는지에 대한 속성입니다. 사용자 지정 변환기를 작성해야 할 수 있습니다. –

+0

예, MyObject의 생성자입니다. –

+0

괜찮아요. 속성이 MyObject 유형인지 확인해야합니다. – sudheeshix

답변

1

테스트하지,하지만 난 당신이 같은 것을 할 수 있다고 생각 :

public MyObject(MyEnum e) 
{ 
    switch(e) 
    { 
     case MyEnum.ValueThatMeansWeDeserializeFromJSON: 
      string text = System.IO.File.ReadAllText(fileName); 
      var serializer = new JsonSerializer(); 
      serializer.Populate(new JsonTextReader(new StringReader(text)), this); 
      break; 
    } 
} 

채우기는 기존 개체를 가지고 DeserializeObject 반대 (즉 개체로 JSON의 특성을 역 직렬화 할 것 이는 내가 코멘트에서 언급 한 바와 같이,

1

. 새로운 개체를 만드는 생성자에서 스위치 대신 공장을 사용합니다. 를 생성자 사용 automaper에 보관하려면이 대신

할 것