DataContractJsonSerializer не сериализует унаследованные типы - C#
Формулировка задачи:
всем привет. уважаемые гуру просветите или посоветуйте что делать.
Есть на сервере обьекты хранящиеся в List<Tank>, от класса Tank наследуется разные классы (тяжелый танк, легкий танк, быстрый танк). Тоесть имеем в листе упакованные обьекты. Нужно етот лист сериализовать в JSON и отправить на клиент. И тут проведя кучу опытов пришел к тому что упакованные обьекты в базовый тип нельзя серриализовать. Что делать как бороться ?
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
Решение задачи: «DataContractJsonSerializer не сериализует унаследованные типы»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { List<Person> persons = new List<Person> { new Person{Id=0,Name="Tom", Age=10}, new Student{Id=1,Name="Mary", Age=23, Group=12}, new Teacher{Id=2,Name="Harry", Age=36, TeacherGroup=19} }; using (FileStream stream = File.OpenWrite(@"C:\Test.json")) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Person>)); serializer.WriteObject(stream, persons); } } } [DataContract] [KnownType("GetKnownTypes")] public class Person { [DataMember] public int Id { get; set; } [DataMember] public int Age { get; set; } [DataMember] public string Name { get; set; } static Type[] GetKnownTypes() { return new Type[] { typeof(Student), typeof(Teacher) }; } } [DataContract] public class Student : Person { [DataMember] public int Group { get; set; } } [DataContract] public class Teacher : Person { [DataMember] public int TeacherGroup { get; set; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д