Skip to content

Commit 9b62cb5

Browse files
committed
Change fallback serializer to base type serializers
1 parent a82b72e commit 9b62cb5

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

SQLiteSharp/Orm.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ namespace SQLiteSharp;
77
public 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

Comments
 (0)