Json.net serializationbinder用于自定义类型的集合

时间:2017-01-20 07:15:54

标签: c# json.net deserialization

我从api获得的json数据包括对象的类型。我想使用自定义序列化绑定器反序列化这些类型。名称空间保留,程序集更改。

public class SerializationBinder : Newtonsoft.Json.SerializationBinder
{
    // Type / Assembly Dictionary
    private Dictionary<String, String> KnownCoreTypes = new Dictionary<string, string>
    {
        {"My.Custom.NameSpace.Type", "Core" }
    };

    public override Type BindToType(string assemblyName, string typeName)
    {
        Type tmpTypeToDeserialize = null;
        string tmpActualValue;
        if (KnownCoreTypes.TryGetValue(typeName, out tmpActualValue) && tmpActualValue == assemblyName)
        {
              assemblyName = typeof(SerializationBinder).GetTypeInfo().Assembly.FullName;
        }

        // The following line of code returns the type.
        tmpTypeToDeserialize = Type.GetType($"{typeName}, {assemblyName}");

        return tmpTypeToDeserialize;
    }
}

但是,如果我有My.Custom.NameSpace.Type的集合怎么办?

如何解决System.Collections.Generic.List'1[[My.Custom.NameSpace.Type, Core]], mscorlib

0 个答案:

没有答案