From e7f02eca9bad25e445dafa500d2f58d91a7e05de Mon Sep 17 00:00:00 2001 From: Khwezi Mngoma Date: Tue, 9 Jun 2026 21:43:47 +0200 Subject: [PATCH 1/2] Refactored Shop services assembly scanner to be more generic --- LiteCharms.Features.MidrandBooks/Extensions/Shop.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs b/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs index fddb438..3c7d771 100644 --- a/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs +++ b/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs @@ -4,11 +4,11 @@ namespace LiteCharms.Features.MidrandBooks.Extensions; public static class Shop { - public static IServiceCollection AddShopServices(this IServiceCollection services) + public static IServiceCollection AddShopServices(this IServiceCollection services, Assembly assembly) { var serviceType = typeof(IService); - var implementations = Assembly.GetExecutingAssembly().GetTypes() + var implementations = assembly.GetTypes() .Where(t => serviceType.IsAssignableFrom(t) && t.IsClass && !t.IsAbstract); foreach (var implementation in implementations) From 11dfd18a44e558427a8289cc1386bfc2de2c3a3e Mon Sep 17 00:00:00 2001 From: Khwezi Mngoma Date: Tue, 9 Jun 2026 21:52:31 +0200 Subject: [PATCH 2/2] Ensured the assembly scanner picks up shared and core components --- LiteCharms.Features.MidrandBooks.Seed/Program.cs | 2 +- .../Common/Fixture.cs | 2 ++ .../Abstractions/IMidrandBooks.cs | 3 +++ LiteCharms.Features.MidrandBooks/Extensions/Shop.cs | 13 +++++++++---- LiteCharms.Features/Abstractions/IFeatures.cs | 3 +++ 5 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 LiteCharms.Features.MidrandBooks/Abstractions/IMidrandBooks.cs create mode 100644 LiteCharms.Features/Abstractions/IFeatures.cs diff --git a/LiteCharms.Features.MidrandBooks.Seed/Program.cs b/LiteCharms.Features.MidrandBooks.Seed/Program.cs index 10d3172..8483ab8 100644 --- a/LiteCharms.Features.MidrandBooks.Seed/Program.cs +++ b/LiteCharms.Features.MidrandBooks.Seed/Program.cs @@ -14,7 +14,7 @@ builder.Services.AddScopedFeatureManagement(); builder.Services .AddLogging() - .AddShopServices() + .AddShopServices() .AddHostedService() .AddHostedService() .AddHostedService() diff --git a/LiteCharms.Features.MidrandBooks.Tests/Common/Fixture.cs b/LiteCharms.Features.MidrandBooks.Tests/Common/Fixture.cs index 0732e5b..a5a759f 100644 --- a/LiteCharms.Features.MidrandBooks.Tests/Common/Fixture.cs +++ b/LiteCharms.Features.MidrandBooks.Tests/Common/Fixture.cs @@ -1,5 +1,7 @@ using LiteCharms.Features.Extensions; +using LiteCharms.Features.MidrandBooks.Abstractions; using LiteCharms.Features.MidrandBooks.Extensions; +using Microsoft.VisualStudio.TestPlatform.TestHost; namespace LiteCharms.Features.MidrandBooks.Tests.Common; diff --git a/LiteCharms.Features.MidrandBooks/Abstractions/IMidrandBooks.cs b/LiteCharms.Features.MidrandBooks/Abstractions/IMidrandBooks.cs new file mode 100644 index 0000000..3994e63 --- /dev/null +++ b/LiteCharms.Features.MidrandBooks/Abstractions/IMidrandBooks.cs @@ -0,0 +1,3 @@ +namespace LiteCharms.Features.MidrandBooks.Abstractions; + +public interface IMidrandBooks; diff --git a/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs b/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs index 3c7d771..254f236 100644 --- a/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs +++ b/LiteCharms.Features.MidrandBooks/Extensions/Shop.cs @@ -1,18 +1,23 @@ using LiteCharms.Features.Abstractions; +using LiteCharms.Features.MidrandBooks.Abstractions; namespace LiteCharms.Features.MidrandBooks.Extensions; public static class Shop { - public static IServiceCollection AddShopServices(this IServiceCollection services, Assembly assembly) + public static IServiceCollection AddShopServices(this IServiceCollection services) { var serviceType = typeof(IService); - var implementations = assembly.GetTypes() + var sharedImplementations = typeof(IFeatures).Assembly.GetTypes() .Where(t => serviceType.IsAssignableFrom(t) && t.IsClass && !t.IsAbstract); - foreach (var implementation in implementations) - services.AddScoped(implementation); + foreach (var sharedImplementation in sharedImplementations) services.AddScoped(sharedImplementation); + + var coreImplementations = typeof(IMidrandBooks).Assembly.GetTypes() + .Where(t => serviceType.IsAssignableFrom(t) && t.IsClass && !t.IsAbstract); + + foreach (var coreImplementation in coreImplementations) services.AddScoped(coreImplementation); return services; } diff --git a/LiteCharms.Features/Abstractions/IFeatures.cs b/LiteCharms.Features/Abstractions/IFeatures.cs new file mode 100644 index 0000000..48a49c5 --- /dev/null +++ b/LiteCharms.Features/Abstractions/IFeatures.cs @@ -0,0 +1,3 @@ +namespace LiteCharms.Features.Abstractions; + +public interface IFeatures;