예제 #1
0
        public IEntitySerializer GetSerizliser(Type type)
        {
            if (_serializers.TryGetValue(type, out var serializer))
            {
                return(serializer);
            }
            else if (type.IsEnum || Nullable.GetUnderlyingType(type)?.IsEnum == true)
            {
                if (_enumSerializers.TryGetValue(type, out var enumSerializer))
                {
                    return(enumSerializer);
                }

                if (type.IsEnum)
                {
                    enumSerializer = new EnumSerializer(type);
                }
                else
                {
                    enumSerializer = new NullableEntitySerializer(new EnumSerializer(Nullable.GetUnderlyingType(type)));
                }

                _enumSerializers[type] = enumSerializer;
                return(enumSerializer);
            }
            else
            {
                return(null);
            }
        }
예제 #2
0
        public void Deserialize()
        {
            var serializer = new NullableEntitySerializer(new EntitySerializer(typeof(int)));

            Assert.AreEqual(1, serializer.Deserialize("1", null));
            Assert.IsNull(serializer.Deserialize(null, null));
            Assert.ThrowsException <FormatException>(() => serializer.Deserialize("", null));
        }
예제 #3
0
 public void AddSerializer(Type type, IEntitySerializer serializer)
 {
     _serializers[type] = _serializers[type] = serializer;
     if (type.IsValueType)
     {
         var nullableType = typeof(Nullable <>).MakeGenericType(type);
         _serializers[nullableType] = new NullableEntitySerializer(serializer);
     }
 }