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); } }
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)); }
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); } }