我总觉得JSON序列化程序实际遍历整个对象的树,并在它遇到的每个接口类型对象上执行自定义JsonConverter的WriteJson函数 - 不是这样.
我有以下类和接口:
public interface IAnimal
{
    string Name { get; set; }
    string Speak();
    List<IAnimal> Children { get; set; }
}
public class Cat : IAnimal
{
    public string Name { get; set; }
    public List<IAnimal> Children { get; set; }        
    public Cat()
    {
        Children = new List<IAnimal>();
    }
    public Cat(string name="") : this()
    {
        Name = name;
    }
    public string Speak()
    {
        return "Meow";
    }       
}
 public class Dog : IAnimal
 {
    public string Name { get; …