public override ValueSerializer BuildSerializer(Serializer serializer, Type type, ConcurrentDictionary <Type, ValueSerializer> typeMapping) { var surrogate = serializer.Options.Surrogates.FirstOrDefault(s => s.To.IsAssignableFrom(type)); ValueSerializer objectSerializer = new ObjectSerializer(type); var fromSurrogateSerializer = new FromSurrogateSerializer(surrogate.FromSurrogate, objectSerializer); typeMapping.TryAdd(type, fromSurrogateSerializer); CodeGenerator.BuildSerializer(serializer, type, (ObjectSerializer)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, serializer.Options.PreserveObjectReferences); typeMapping.TryAdd(type, fromSurrogateSerializer); serializer.CodeGenerator.BuildSerializer(serializer, objectSerializer); return(fromSurrogateSerializer); }