다음 코드를 고려 상속을 처리 할 수 있어야합니다 :무시 asp.net 코어 Newtonsoft.Json는
내가 상속 클래스를 처리 디시리얼라이저 방법과 과정에 내 자신의 논리를 주입 할 필요가static void Main(string[] args)
{
var classes = new Classes()
{
Instances = new A[]{
new B
{
BirthDate = DateTime.Now,
Name = "B1",
SomethingElse = "Test"
},
new C
{
Name = "C1",
SomethingElse1 = "Test2",
SomethingElse2 = "Test3",
}
}
};
var serialized = JsonConvert.SerializeObject(classes);
var deserialized = JsonConvert.DeserializeObject<Classes>(serialized);
}
}
public class Classes
{
public A[] Instances { get; set; }
}
public enum ClassType
{
B = 1,
C = 2
}
public class A
{
public string Name { get; set; }
public virtual ClassType ClassType { get; }
}
public class B : A
{
public string SomethingElse { get; set; }
public DateTime BirthDate { get; set; }
public override ClassType ClassType => ClassType.B;
}
public class C : A
{
public string SomethingElse1 { get; set; }
public string SomethingElse2 { get; set; }
public override ClassType ClassType => ClassType.C;
}
. 이 경우 JSON의 ClassType 속성을 기반으로 결정을 내리고 싶습니다. 어떤 아이디어/힌트 그것을하는 방법?
BTW. newtonsoft.json TypeNameHandling = TypeNameHandling.All
의 기능을 사용할 수 있지만 데이터가 타사 시스템에서 전송되므로 직렬화 프로세스를 제어 할 수는 없습니다. 내가 제어 할 수있는 유일한 것은 역 직렬화 부분입니다.
그것은 – DavidG