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