Browse Source

Don't scan System.Data.SqlClient by default

Lucas Trzesniewski 1 year ago
parent
commit
335b3e94f0
2 changed files with 17 additions and 2 deletions
  1. 12 1
      src/Abc.Zebus/Core/BusFactory.cs
  2. 5 1
      src/Abc.Zebus/Scan/TypeSource.cs

+ 12 - 1
src/Abc.Zebus/Core/BusFactory.cs

@@ -164,7 +164,18 @@ public class BusFactory
         }
 
         public bool Matches(Assembly assembly)
-            => _assembly == null || _assembly == assembly;
+        {
+            if (_assembly is null)
+            {
+                // Ignore this assembly by default, since GetTypes() fails there in net8.0: https://github.com/dotnet/SqlClient/issues/1930
+                if (assembly.GetName().Name == "System.Data.SqlClient")
+                    return false;
+
+                return true;
+            }
+
+            return _assembly == assembly;
+        }
 
         public bool Matches(Type type)
         {

+ 5 - 1
src/Abc.Zebus/Scan/TypeSource.cs

@@ -12,7 +12,11 @@ public class TypeSource
 
     public virtual IEnumerable<Type> GetTypes()
     {
-        return AppDomain.CurrentDomain.GetAssemblies().Where(AssemblyFilter).SelectMany(x => x.GetTypes()).Where(TypeFilter);
+        return AppDomain.CurrentDomain
+                        .GetAssemblies()
+                        .Where(AssemblyFilter)
+                        .SelectMany(a => a.GetTypes())
+                        .Where(TypeFilter);
     }
 
     public static implicit operator TypeSource(Type type)