Skip to content

Commit 2167478

Browse files
authored
Merge pull request #36 from A-Programmer/feature/Add_Pagination_Request_Options
Change name of Service Registration method
2 parents ef328f8 + 41467e3 commit 2167478

File tree

9 files changed

+58
-16
lines changed

9 files changed

+58
-16
lines changed

Samples/MediatorSampleApp/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
services.AddValidatorsFromAssembly(typeof(Program).Assembly);
1212

1313

14-
services.AddKSMediator(Assembly.GetExecutingAssembly());
14+
services.AddKSFramework(Assembly.GetExecutingAssembly());
1515

1616

1717
var provider = services.BuildServiceProvider();
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace KSFramework.Contracts;
2+
3+
public interface IInjectable
4+
{
5+
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace KSFramework.Contracts;
2+
3+
public interface IInjectableAndImplementations
4+
{
5+
6+
}

src/KSFramework/KSMessaging/Extensions/RegisterMediatorServices.cs

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using KSFramework.KSMessaging.Abstraction;
22
using Microsoft.Extensions.DependencyInjection;
33
using System.Reflection;
4+
using KSFramework.Contracts;
45
using KSFramework.KSMessaging.Behaviors;
56

67
namespace KSFramework.KSMessaging.Extensions;
@@ -16,12 +17,13 @@ public static class RegisterMediatorServices
1617
/// <param name="services">The service collection.</param>
1718
/// <param name="assemblies">The assemblies to scan.</param>
1819
/// <returns>The service collection.</returns>
19-
public static IServiceCollection AddKSMediator(this IServiceCollection services, params Assembly[] assemblies)
20+
public static IServiceCollection AddKSFramework(this IServiceCollection services, params Assembly[] assemblies)
2021
{
2122
services.AddScoped<IMediator, Mediator>();
2223
services.AddScoped<ISender>(sp => sp.GetRequiredService<IMediator>());
2324

24-
services.RegisterAllImplementationsOf<IRequestDecorator>(assemblies);
25+
services.RegisterAllImplementations<IInjectable>(assemblies);
26+
services.RegisterAllImplementationsOf<IInjectableAndImplementations>(assemblies);
2527

2628
services.Scan(scan => scan
2729
.FromAssemblies(assemblies)
@@ -78,7 +80,41 @@ public static IServiceCollection AddKSMediator(this IServiceCollection services,
7880
return services;
7981
}
8082

81-
public static IServiceCollection RegisterAllImplementationsOf<TInterface>(this IServiceCollection services,
83+
private static IServiceCollection RegisterAllImplementationsOf<TInterface>(this IServiceCollection services,
84+
Assembly[] assemblies,
85+
ServiceLifetime lifetime = ServiceLifetime.Scoped)
86+
{
87+
var interfaceType = typeof(TInterface);
88+
89+
foreach (var assembly in assemblies)
90+
{
91+
var implementations = assembly.DefinedTypes
92+
.Where(type => type.IsClass && !type.IsAbstract && interfaceType.IsAssignableFrom(type))
93+
.ToList();
94+
95+
foreach (var implementation in implementations)
96+
{
97+
switch (lifetime)
98+
{
99+
case ServiceLifetime.Transient:
100+
services.AddTransient(interfaceType, implementation);
101+
break;
102+
case ServiceLifetime.Scoped:
103+
services.AddScoped(interfaceType, implementation);
104+
break;
105+
case ServiceLifetime.Singleton:
106+
services.AddSingleton(interfaceType, implementation);
107+
break;
108+
default:
109+
throw new ArgumentException("Invalid service lifetime", nameof(lifetime));
110+
}
111+
}
112+
}
113+
114+
return services;
115+
}
116+
117+
private static IServiceCollection RegisterAllImplementations<TInterface>(this IServiceCollection services,
82118
Assembly[] assemblies,
83119
ServiceLifetime lifetime = ServiceLifetime.Scoped)
84120
{

src/KSFramework/KSMessaging/IRequestDecorator.cs

Lines changed: 0 additions & 6 deletions
This file was deleted.

tests/KSFramework/KSFramework.IntegrationTests/Messaging/MediatorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected override void ConfigureServices(IServiceCollection services)
4141
{
4242
base.ConfigureServices(services);
4343

44-
services.AddKSMediator(typeof(MediatorTests).Assembly);
44+
services.AddKSFramework(typeof(MediatorTests).Assembly);
4545
}
4646

4747
[Fact]

tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorNotificationTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace KSFramework.UnitTests.Configuration;
66

77
/// <summary>
8-
/// Tests for verifying notification handlers and behaviors registration through AddKSMediator.
8+
/// Tests for verifying notification handlers and behaviors registration through AddKSFramework.
99
/// </summary>
1010
public class AddKSMediatorNotificationTests
1111
{
@@ -51,7 +51,7 @@ public async Task AddKSMediator_Should_Register_NotificationHandler_And_Behavior
5151
// Arrange
5252
var services = new ServiceCollection();
5353

54-
services.AddKSMediator(typeof(TestNotification).Assembly);
54+
services.AddKSFramework(typeof(TestNotification).Assembly);
5555
services.AddSingleton<INotificationHandler<TestNotification>, TestNotificationHandler>();
5656
services.AddSingleton<INotificationBehavior<TestNotification>, TestNotificationBehavior>();
5757

tests/KSFramework/KSFramework.UnitTests/Configuration/AddKSMediatorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public async Task AddKSMediator_RegistersHandlersAndBehaviorsFromAssembly()
1313
// Arrange
1414
var services = new ServiceCollection();
1515

16-
services.AddKSMediator(typeof(MultiplyByTwoRequest).Assembly);
16+
services.AddKSFramework(typeof(MultiplyByTwoRequest).Assembly);
1717

1818
var provider = services.BuildServiceProvider();
1919

tests/KSFramework/KSFramework.UnitTests/Mediator/Registration/AddKSMediatorRegistrationTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace KSFramework.UnitTests.Mediator.Registration;
66

77
/// <summary>
8-
/// Unit tests for AddKSMediator service registration.
8+
/// Unit tests for AddKSFramework service registration.
99
/// </summary>
1010
public class AddKSMediatorRegistrationTests
1111
{
@@ -54,7 +54,7 @@ public async Task AddKSMediator_RegistersHandlersAndBehaviorsCorrectly()
5454
{
5555
// Arrange
5656
var services = new ServiceCollection();
57-
services.AddKSMediator(typeof(AddKSMediatorRegistrationTests).Assembly);
57+
services.AddKSFramework(typeof(AddKSMediatorRegistrationTests).Assembly);
5858
var provider = services.BuildServiceProvider();
5959

6060
var mediator = provider.GetService<IMediator>();

0 commit comments

Comments
 (0)