나는 serialising 및 Json.NET 사용 및 JSON에서 deserialising하고 다음 수업을 :파생 클래스를 사용하는 C# 클래스에 JSON 객체를 어떻게 직렬화하지 않습니까?
public class Message
{
public Guid MessageId { get; set; }
public List<Task> Tasks { get; set; }
}
public class Task
{
public int TaskId { get; set; }
}
public SomeTask : Task
{
public string SomeTaskThing { get; set; }
public List<string> Operations { get; set; }
}
public OtherTask : Task
{
public int OtherTaskThing { get; set; }
public List<int> MoreOtherTaskThings { get; set; }
}
Message
기본적으로 내가 메시지 프로세서에 와이어를 가로 질러 통과 SomeTask
및 OtherTask
Task
의 목록으로 구성 또한이 수업에 대해서도 알고 있습니다.
I에는 직렬화 할 때 Message
나는 다음을 수행 : 내가 JSON에 포함 $type
이름과 함께 기대하는 것처럼
string json = JsonConvert.SerializeObject(
message,
Formatting.Indented,
new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects
});
내 파생 클래스가 직렬화합니다.
그러나 JSON 문자열을개체로 deserialize하면 deserialiser가 파생 클래스 개체를 다시 확보하지 못합니다. 방금 기본 클래스 Task
의 목록을 얻습니다.
TypeNameHandling = TypeNameHandling.Objects
을 사용하여 $type
을 JSON 문자열에 추가했다고 생각하면 인스턴스화 할 클래스에 대한 힌트가 deserialiser에 제공되었을 수 있지만 잘못되었습니다.
기본 클래스가 Task
인 객체를 역 직렬화하고 파생 클래스를 List<Task>
으로 재수 화하려면 어떻게해야합니까?
이 프로젝트에서는 .NET Framework 3.5로 제한됩니다.
아 ... 저의 사각 지대에 완전히 맞았습니다. 감사. – Kev