FastTextTypeSerializer CreateArraySerializer(Type type, Type elementType) { FastTextTypeSerializer elementSerializer = this[elementType]; object serializer = FastActivator.Create(typeof(FastTextArraySerializer <>), new[] { elementType }, new object[] { elementSerializer }); return(CreateSerializerFor(type, (TypeSerializer)serializer)); }
FastTextTypeSerializer CreateNullableSerializer(Type type, Type underlyingType) { FastTextTypeSerializer underlyingTypeSerializer = this[underlyingType]; var serializer = (TypeSerializer) FastActivator.Create(typeof(NullableSerializer <>), new[] { underlyingType }, new object[] { underlyingTypeSerializer }); return(CreateSerializerFor(type, serializer)); }
public FastTextTypeSerializerCache(TypeSerializerCache typeSerializerCache) { _propertyTypeSerializerCache = new FastTextPropertyTypeSerializerCache(this); _serializers = new Cache <Type, FastTextTypeSerializer>(CreateSerializerFor); typeSerializerCache.Each((type, serializer) => _serializers.Add(type, CreateSerializerFor(type, serializer))); _serializers[typeof(string)] = new FastTextTypeSerializer <string>(new FastTextStringSerializer()); _serializers[typeof(Type)] = new FastTextTypeSerializer <Type>(new FastTextSystemTypeSerializer()); }
FastTextTypeSerializer CreateListSerializer(Type type, Type elementType) { FastTextTypeSerializer elementSerializer = this[elementType]; Type listType = type.ImplementsGeneric(typeof(List <>)) ? typeof(FastTextListSerializer <>) : typeof(FastTextIListSerializer <>); object serializer = FastActivator.Create(listType, new[] { elementType }, new object[] { elementSerializer }); return(CreateSerializerFor(type, (TypeSerializer)serializer)); }
FastTextTypeSerializer CreateDictionarySerializer(Type type, Type keyType, Type elementType) { FastTextTypeSerializer keySerializer = this[keyType]; FastTextTypeSerializer elementSerializer = this[elementType]; Type dictionaryType = type.ImplementsGeneric(typeof(Dictionary <,>)) ? typeof(FastTextDictionarySerializer <,>) : typeof(FastTextIDictionarySerializer <,>); object serializer = FastActivator.Create(dictionaryType, new[] { keyType, elementType }, new object[] { keySerializer, elementSerializer }); return(CreateSerializerFor(type, (TypeSerializer)serializer)); }
public T Deserialize <T>(TextReader reader) { FastTextTypeSerializer serializer = GetTypeSerializer(typeof(T)); return(serializer.Deserialize <T>(reader.ReadToEnd())); }
public T Deserialize <T>(string text) { FastTextTypeSerializer serializer = GetTypeSerializer(typeof(T)); return(serializer.Deserialize <T>(text)); }
public void Serialize <T>(T obj, TextWriter writer) { FastTextTypeSerializer serializer = GetTypeSerializer(typeof(T)); serializer.Serialize(obj, writer.Write); }