Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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());
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        public T Deserialize <T>(TextReader reader)
        {
            FastTextTypeSerializer serializer = GetTypeSerializer(typeof(T));

            return(serializer.Deserialize <T>(reader.ReadToEnd()));
        }
Exemple #7
0
        public T Deserialize <T>(string text)
        {
            FastTextTypeSerializer serializer = GetTypeSerializer(typeof(T));

            return(serializer.Deserialize <T>(text));
        }
Exemple #8
0
        public void Serialize <T>(T obj, TextWriter writer)
        {
            FastTextTypeSerializer serializer = GetTypeSerializer(typeof(T));

            serializer.Serialize(obj, writer.Write);
        }