public override ValueSerializer BuildSerializer(Serializer serializer, Type type, ConcurrentDictionary<Type, ValueSerializer> typeMapping) { var surrogate = serializer.Options.Surrogates.FirstOrDefault(s => s.To.IsAssignableFrom(type)); ObjectSerializer objectSerializer = new ObjectSerializer(type); var fromSurrogateSerializer = new FromSurrogateSerializer(surrogate.FromSurrogate, objectSerializer); typeMapping.TryAdd(type, fromSurrogateSerializer); CodeGenerator.BuildSerializer(serializer, type, objectSerializer); return fromSurrogateSerializer; }
public override ValueSerializer BuildSerializer(Serializer serializer, Type type, ConcurrentDictionary<Type, ValueSerializer> typeMapping) { var surrogate = serializer.Options.Surrogates.FirstOrDefault(s => s.To.GetTypeInfo().IsAssignableFrom(type.GetTypeInfo())); var objectSerializer = new ObjectSerializer(type); // ReSharper disable once PossibleNullReferenceException var fromSurrogateSerializer = new FromSurrogateSerializer(surrogate.FromSurrogate, objectSerializer); typeMapping.TryAdd(type, fromSurrogateSerializer); serializer.CodeGenerator.BuildSerializer(serializer, objectSerializer); return fromSurrogateSerializer; }