From e64a2eaa17a2ba1b2316abb2dd00694a0d082693 Mon Sep 17 00:00:00 2001 From: BEN AMEUR Date: Wed, 7 Feb 2024 12:45:00 +0100 Subject: [PATCH] issues(4893): try register serializer or skip when already registred 8d23d6 issues(4893): try register serializer or skip when already registred + clean --- .../Elsa.MongoDb/Features/MongoDbFeature.cs | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs b/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs index be1509edb..8ca02375e 100644 --- a/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs +++ b/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs @@ -48,16 +48,16 @@ public class MongoDbFeature : FeatureBase private static void RegisterSerializers() { - BsonSerializer.TryRegisterSerializer(typeof(object), new PolymorphicSerializer()); - BsonSerializer.TryRegisterSerializer(typeof(Type), new TypeSerializer()); - BsonSerializer.TryRegisterSerializer(typeof(Variable), new VariableSerializer()); - BsonSerializer.TryRegisterSerializer(typeof(Version), new VersionSerializer()); - BsonSerializer.TryRegisterSerializer(typeof(JsonElement), new JsonElementSerializer()); + TryRegisterSerializerOrSkipWhenExist(typeof(object), new PolymorphicSerializer()); + TryRegisterSerializerOrSkipWhenExist(typeof(Type), new TypeSerializer()); + TryRegisterSerializerOrSkipWhenExist(typeof(Variable), new VariableSerializer()); + TryRegisterSerializerOrSkipWhenExist(typeof(Version), new VersionSerializer()); + TryRegisterSerializerOrSkipWhenExist(typeof(JsonElement), new JsonElementSerializer()); } private static void RegisterClassMaps() { - BsonClassMap.RegisterClassMap(cm => + BsonClassMap.TryRegisterClassMap(cm => { cm.AutoMap(); // Automatically map other properties cm @@ -66,6 +66,17 @@ public class MongoDbFeature : FeatureBase }); } + private static void TryRegisterSerializerOrSkipWhenExist(Type type, IBsonSerializer serializer) + { + try + { + BsonSerializer.TryRegisterSerializer(type, serializer); + } + catch (BsonSerializationException ex) + { + } + } + private static IMongoDatabase CreateDatabase(IServiceProvider sp, string connectionString) { var options = sp.GetRequiredService>().Value;