反序列化时未调用Custom SerializationBinder



我有非常简单的代码,但无法使其工作:

var binder = new TypeNameSerializationBinder("MyNamespace.{0}, MyAssembly");
JsonSerializerSettings settings = new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.All,
    Binder = binder
};
string json = ...
JsonSerializer js = JsonSerializer.Create(settings);
// binder not called
var obj1 = js.Deserialize(new StringReader(json), bindingContext.ModelType);
// binder not called either
var obj = JsonConvert.DeserializeObject(json, bindingContext.ModelType, settings);
// not called even when serializing
JsonConvert.SerializeObject(obj, bindingContext.ModelType, settings);

TypeNameSerializationBinder是我从这里复制的一个简单活页夹。没有调用binder的方法$type属性被忽略。所有项都被反序列化为父类实例。我试图取消序列化的类型是Dictionary<String, MyParentClass>

在JSON字符串中,"$type"属性应该是对象的第一个属性。这似乎是个问题。

最新更新