在父类中添加@Class
的属性,示例如下:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace ConsoleApp2
{
internal class Program
{
static void Main(string[] args)
{
var list = new List<A>
{
new B{Id = 1,PropB = "B"},
new C{Id = 2,PropC = "C"}
};
var json = JsonConvert.SerializeObject(list);
Console.WriteLine(json);
Console.ReadKey();
}
}
internal class A
{
public int Id { get; set; }
public string @Class => GetType().Name;
public string @FullClass => GetType().FullName;
}
internal class B : A
{
public string PropB { get; set; }
}
internal class C : A
{
public string PropC { get; set; }
}
}
运行结果:
[{"PropB":"B","Id":1,"Class":"B","FullClass":"ConsoleApp2.B"},{"PropC":"C","Id":2,"Class":"C","FullClass":"ConsoleApp2.C"}]