@@ -7,7 +7,6 @@ namespace SQLiteSharp;
77public class Orm {
88 public ConcurrentDictionary < Type , TableMap > TableMaps { get ; } = [ ] ;
99 public ConcurrentDictionary < Type , TypeSerializer > TypeSerializers { get ; } = [ ] ;
10- public TypeSerializer ? TypeSerializerFallback { get ; set ; } = null ;
1110 public Func < MemberInfo , bool > IsImplicitPrimaryKey { get ; set ; } = Member => Member . Name == "Id" ;
1211 public Func < MemberInfo , bool > IsImplicitIndex { get ; set ; } = Member => Member . Name . EndsWith ( "Id" ) ;
1312 public Func < MemberInfo , bool > IsImplicitAutoIncrementedPrimaryKey { get ; set ; } = Member => false ;
@@ -36,9 +35,11 @@ public TypeSerializer GetTypeSerializer(Type type) {
3635 if ( TypeSerializers . TryGetValue ( type , out TypeSerializer mapper ) ) {
3736 return mapper ;
3837 }
39- // Try get fallback serializer
40- if ( TypeSerializerFallback is not null ) {
41- return TypeSerializerFallback . Value ;
38+ // Try get fallback serializer for base type
39+ foreach ( TypeSerializer typeSerializer in TypeSerializers . Values ) {
40+ if ( typeSerializer . ClrType == type ) {
41+ return typeSerializer ;
42+ }
4243 }
4344 // Serializer not found
4445 throw new InvalidOperationException ( $ "No { nameof ( TypeSerializer ) } found for '{ type } '") ;
@@ -202,9 +203,9 @@ private void AddDefaultTypeSerializers() {
202203 serialize : ( byte [ ] clr ) => clr ,
203204 deserialize : ( SqliteValue sqlite ) => sqlite . AsBlob
204205 ) ;
205- RegisterType < List < byte > > (
206+ RegisterType < IEnumerable < byte > > (
206207 sqliteType : SqliteType . Blob ,
207- serialize : ( List < byte > clr ) => clr . ToArray ( ) ,
208+ serialize : ( IEnumerable < byte > clr ) => clr . ToArray ( ) ,
208209 deserialize : ( SqliteValue sqlite ) => sqlite . AsBlob . ToList ( )
209210 ) ;
210211 RegisterType < Enum > (
0 commit comments