diff --git a/Samples/MediatorSampleApp/Program.cs b/Samples/MediatorSampleApp/Program.cs
index 6e5f80d..efcd0f6 100644
--- a/Samples/MediatorSampleApp/Program.cs
+++ b/Samples/MediatorSampleApp/Program.cs
@@ -11,7 +11,7 @@
services.AddValidatorsFromAssembly(typeof(Program).Assembly);
-services.AddKSMediator(Assembly.GetExecutingAssembly());
+services.AddKSFramework(Assembly.GetExecutingAssembly());
var provider = services.BuildServiceProvider();
diff --git a/src/KSFramework/Contracts/IInjectable.cs b/src/KSFramework/Contracts/IInjectable.cs
new file mode 100644
index 0000000..0b22765
--- /dev/null
+++ b/src/KSFramework/Contracts/IInjectable.cs
@@ -0,0 +1,6 @@
+namespace KSFramework.Contracts;
+
+public interface IInjectable
+{
+
+}
\ No newline at end of file
diff --git a/src/KSFramework/Contracts/IInjectableAndImplementations.cs b/src/KSFramework/Contracts/IInjectableAndImplementations.cs
new file mode 100644
index 0000000..2585fc4
--- /dev/null
+++ b/src/KSFramework/Contracts/IInjectableAndImplementations.cs
@@ -0,0 +1,6 @@
+namespace KSFramework.Contracts;
+
+public interface IInjectableAndImplementations
+{
+
+}
\ No newline at end of file
diff --git a/src/KSFramework/KSMessaging/Extensions/RegisterMediatorServices.cs b/src/KSFramework/KSMessaging/Extensions/RegisterMediatorServices.cs
index 95228eb..3287ccf 100644
--- a/src/KSFramework/KSMessaging/Extensions/RegisterMediatorServices.cs
+++ b/src/KSFramework/KSMessaging/Extensions/RegisterMediatorServices.cs
@@ -1,6 +1,7 @@
using KSFramework.KSMessaging.Abstraction;
using Microsoft.Extensions.DependencyInjection;
using System.Reflection;
+using KSFramework.Contracts;
using KSFramework.KSMessaging.Behaviors;
namespace KSFramework.KSMessaging.Extensions;
@@ -16,12 +17,13 @@ public static class RegisterMediatorServices
/// The service collection.
/// The assemblies to scan.
/// The service collection.
- public static IServiceCollection AddKSMediator(this IServiceCollection services, params Assembly[] assemblies)
+ public static IServiceCollection AddKSFramework(this IServiceCollection services, params Assembly[] assemblies)
{
services.AddScoped();
services.AddScoped(sp => sp.GetRequiredService());
- services.RegisterAllImplementationsOf(assemblies);
+ services.RegisterAllImplementations(assemblies);
+ services.RegisterAllImplementationsOf(assemblies);
services.Scan(scan => scan
.FromAssemblies(assemblies)
@@ -78,7 +80,41 @@ public static IServiceCollection AddKSMediator(this IServiceCollection services,
return services;
}
- public static IServiceCollection RegisterAllImplementationsOf(this IServiceCollection services,
+ private static IServiceCollection RegisterAllImplementationsOf(this IServiceCollection services,
+ Assembly[] assemblies,
+ ServiceLifetime lifetime = ServiceLifetime.Scoped)
+ {
+ var interfaceType = typeof(TInterface);
+
+ foreach (var assembly in assemblies)
+ {
+ var implementations = assembly.DefinedTypes
+ .Where(type => type.IsClass && !type.IsAbstract && interfaceType.IsAssignableFrom(type))
+ .ToList();
+
+ foreach (var implementation in implementations)
+ {
+ switch (lifetime)
+ {
+ case ServiceLifetime.Transient:
+ services.AddTransient(interfaceType, implementation);
+ break;
+ case ServiceLifetime.Scoped:
+ services.AddScoped(interfaceType, implementation);
+ break;
+ case ServiceLifetime.Singleton:
+ services.AddSingleton(interfaceType, implementation);
+ break;
+ default:
+ throw new ArgumentException("Invalid service lifetime", nameof(lifetime));
+ }
+ }
+ }
+
+ return services;
+ }
+
+ private static IServiceCollection RegisterAllImplementations(this IServiceCollection services,
Assembly[] assemblies,
ServiceLifetime lifetime = ServiceLifetime.Scoped)
{
diff --git a/src/KSFramework/KSMessaging/IRequestDecorator.cs b/src/KSFramework/KSMessaging/IRequestDecorator.cs
deleted file mode 100644
index 0d270fd..0000000
--- a/src/KSFramework/KSMessaging/IRequestDecorator.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace KSFramework.KSMessaging;
-
-public interface IRequestDecorator
-{
-
-}
\ No newline at end of file
diff --git a/tests/KSFramework/KSFramework.IntegrationTests/Messaging/MediatorTests.cs b/tests/KSFramework/KSFramework.IntegrationTests/Messaging/MediatorTests.cs
index 2f2e321..76db1a5 100644
--- a/tests/KSFramework/KSFramework.IntegrationTests/Messaging/MediatorTests.cs
+++ b/tests/KSFramework/KSFramework.IntegrationTests/Messaging/MediatorTests.cs
@@ -41,7 +41,7 @@ protected override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
- services.AddKSMediator(typeof(MediatorTests).Assembly);
+ services.AddKSFramework(typeof(MediatorTests).Assembly);
}
[Fact]
diff --git a/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorNotificationTests.cs b/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorNotificationTests.cs
index 045e36d..98538dc 100644
--- a/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorNotificationTests.cs
+++ b/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorNotificationTests.cs
@@ -5,7 +5,7 @@
namespace KSFramework.UnitTests.Configuration;
///
-/// Tests for verifying notification handlers and behaviors registration through AddKSMediator.
+/// Tests for verifying notification handlers and behaviors registration through AddKSFramework.
///
public class AddKSMediatorNotificationTests
{
@@ -51,7 +51,7 @@ public async Task AddKSMediator_Should_Register_NotificationHandler_And_Behavior
// Arrange
var services = new ServiceCollection();
- services.AddKSMediator(typeof(TestNotification).Assembly);
+ services.AddKSFramework(typeof(TestNotification).Assembly);
services.AddSingleton, TestNotificationHandler>();
services.AddSingleton, TestNotificationBehavior>();
diff --git a/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorTests.cs b/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorTests.cs
index 32be322..faf8192 100644
--- a/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorTests.cs
+++ b/tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorTests.cs
@@ -13,7 +13,7 @@ public async Task AddKSMediator_RegistersHandlersAndBehaviorsFromAssembly()
// Arrange
var services = new ServiceCollection();
- services.AddKSMediator(typeof(MultiplyByTwoRequest).Assembly);
+ services.AddKSFramework(typeof(MultiplyByTwoRequest).Assembly);
var provider = services.BuildServiceProvider();
diff --git a/tests/KSFramework/KSFramework.UnitTests/Mediator/Registration/AddKSMediatorRegistrationTests.cs b/tests/KSFramework/KSFramework.UnitTests/Mediator/Registration/AddKSMediatorRegistrationTests.cs
index 901dedb..4296cac 100644
--- a/tests/KSFramework/KSFramework.UnitTests/Mediator/Registration/AddKSMediatorRegistrationTests.cs
+++ b/tests/KSFramework/KSFramework.UnitTests/Mediator/Registration/AddKSMediatorRegistrationTests.cs
@@ -5,7 +5,7 @@
namespace KSFramework.UnitTests.Mediator.Registration;
///
-/// Unit tests for AddKSMediator service registration.
+/// Unit tests for AddKSFramework service registration.
///
public class AddKSMediatorRegistrationTests
{
@@ -54,7 +54,7 @@ public async Task AddKSMediator_RegistersHandlersAndBehaviorsCorrectly()
{
// Arrange
var services = new ServiceCollection();
- services.AddKSMediator(typeof(AddKSMediatorRegistrationTests).Assembly);
+ services.AddKSFramework(typeof(AddKSMediatorRegistrationTests).Assembly);
var provider = services.BuildServiceProvider();
var mediator = provider.GetService();