Skip to content

Commit 809dd10

Browse files
committed
Updated handler selector interface signature
1 parent a326a91 commit 809dd10

File tree

5 files changed

+31
-79
lines changed

5 files changed

+31
-79
lines changed

Src/Xer.Cqrs.Extensions.Microsoft.DependencyInjection/CqrsCommandHandlerSelector.cs

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.Generic;
1+
using System.Linq;
22
using System.Reflection;
33
using Microsoft.Extensions.DependencyInjection;
44
using Xer.Cqrs.CommandStack;
@@ -17,30 +17,21 @@ internal CqrsCommandHandlerSelector(IServiceCollection serviceCollection)
1717
_serviceCollection = serviceCollection;
1818
}
1919

20-
public ICqrsCommandHandlerSelector ByInterface(Assembly assembly)
20+
public ICqrsCommandHandlerSelector ByInterface(params Assembly[] assemblies)
2121
{
22-
return ByInterface(assembly, ServiceLifetime.Transient);
22+
return ByInterface(ServiceLifetime.Transient, assemblies);
2323
}
2424

25-
public ICqrsCommandHandlerSelector ByInterface(Assembly assembly, ServiceLifetime lifetime)
26-
{
27-
return ByInterface(new[] { assembly }, lifetime);
28-
}
29-
30-
public ICqrsCommandHandlerSelector ByInterface(IEnumerable<Assembly> assemblies)
31-
{
32-
return ByInterface(assemblies, ServiceLifetime.Transient);
33-
}
34-
35-
public ICqrsCommandHandlerSelector ByInterface(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime)
25+
public ICqrsCommandHandlerSelector ByInterface(ServiceLifetime lifetime, params Assembly[] assemblies)
3626
{
3727
if (assemblies == null)
3828
{
3929
throw new System.ArgumentNullException(nameof(assemblies));
4030
}
4131

4232
_serviceCollection.Scan(scan => scan
43-
.FromAssemblies(assemblies)
33+
// Scan distinct assemblies.
34+
.FromAssemblies(assemblies.Distinct())
4435
// Register async and sync command handlers
4536
.AddClasses(classes => classes.AssignableToAny(typeof(ICommandAsyncHandler<>), typeof(ICommandHandler<>)))
4637
.AsImplementedInterfaces()
@@ -57,30 +48,21 @@ public ICqrsCommandHandlerSelector ByInterface(IEnumerable<Assembly> assemblies,
5748
return this;
5849
}
5950

60-
public ICqrsCommandHandlerSelector ByAttribute(Assembly assembly)
61-
{
62-
return ByAttribute(assembly, ServiceLifetime.Transient);
63-
}
64-
65-
public ICqrsCommandHandlerSelector ByAttribute(Assembly assembly, ServiceLifetime lifetime)
66-
{
67-
return ByAttribute(new[] { assembly }, lifetime);
68-
}
69-
70-
public ICqrsCommandHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies)
51+
public ICqrsCommandHandlerSelector ByAttribute(params Assembly[] assemblies)
7152
{
72-
return ByAttribute(assemblies, ServiceLifetime.Transient);
53+
return ByAttribute(ServiceLifetime.Transient, assemblies);
7354
}
7455

75-
public ICqrsCommandHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime)
56+
public ICqrsCommandHandlerSelector ByAttribute(ServiceLifetime lifetime, params Assembly[] assemblies)
7657
{
7758
if (assemblies == null)
7859
{
7960
throw new System.ArgumentNullException(nameof(assemblies));
8061
}
8162

8263
_serviceCollection.Scan(scan => scan
83-
.FromAssemblies(assemblies)
64+
// Scan distinct assemblies.
65+
.FromAssemblies(assemblies.Distinct())
8466
// Register classes that has a method marked with [CommandHandler]
8567
.AddClasses(classes => classes.Where(type => CommandHandlerAttributeMethod.IsFoundInType(type)))
8668
.AsSelf()

Src/Xer.Cqrs.Extensions.Microsoft.DependencyInjection/CqrsEventHandlerSelector.cs

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.Generic;
1+
using System.Linq;
22
using System.Reflection;
33
using Microsoft.Extensions.DependencyInjection;
44
using Xer.Cqrs.EventStack;
@@ -16,30 +16,21 @@ internal CqrsEventHandlerSelector(IServiceCollection serviceCollection)
1616
_serviceCollection = serviceCollection;
1717
}
1818

19-
public ICqrsEventHandlerSelector ByInterface(Assembly assembly)
19+
public ICqrsEventHandlerSelector ByInterface(params Assembly[] assemblies)
2020
{
21-
return ByInterface(assembly, ServiceLifetime.Transient);
21+
return ByInterface(ServiceLifetime.Transient, assemblies);
2222
}
2323

24-
public ICqrsEventHandlerSelector ByInterface(Assembly assembly, ServiceLifetime lifetime)
25-
{
26-
return ByInterface(new[] { assembly }, lifetime);
27-
}
28-
29-
public ICqrsEventHandlerSelector ByInterface(IEnumerable<Assembly> assemblies)
30-
{
31-
return ByInterface(assemblies, ServiceLifetime.Transient);
32-
}
33-
34-
public ICqrsEventHandlerSelector ByInterface(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime)
24+
public ICqrsEventHandlerSelector ByInterface(ServiceLifetime lifetime, params Assembly[] assemblies)
3525
{
3626
if (assemblies == null)
3727
{
3828
throw new System.ArgumentNullException(nameof(assemblies));
3929
}
4030

4131
_serviceCollection.Scan(scan => scan
42-
.FromAssemblies(assemblies)
32+
// Scan distinct assemblies.
33+
.FromAssemblies(assemblies.Distinct())
4334
// Register async and sync event handlers
4435
.AddClasses(classes => classes.AssignableToAny(typeof(IEventAsyncHandler<>), typeof(IEventHandler<>)))
4536
.AsImplementedInterfaces()
@@ -52,31 +43,22 @@ public ICqrsEventHandlerSelector ByInterface(IEnumerable<Assembly> assemblies, S
5243

5344
return this;
5445
}
55-
56-
public ICqrsEventHandlerSelector ByAttribute(Assembly assembly)
57-
{
58-
return ByAttribute(assembly, ServiceLifetime.Transient);
59-
}
60-
61-
public ICqrsEventHandlerSelector ByAttribute(Assembly assembly, ServiceLifetime lifetime)
62-
{
63-
return ByAttribute(new[] { assembly }, lifetime);
64-
}
6546

66-
public ICqrsEventHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies)
47+
public ICqrsEventHandlerSelector ByAttribute(params Assembly[] assemblies)
6748
{
68-
return ByAttribute(assemblies, ServiceLifetime.Transient);
49+
return ByAttribute(ServiceLifetime.Transient, assemblies);
6950
}
7051

71-
public ICqrsEventHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime)
52+
public ICqrsEventHandlerSelector ByAttribute(ServiceLifetime lifetime, params Assembly[] assemblies)
7253
{
7354
if (assemblies == null)
7455
{
7556
throw new System.ArgumentNullException(nameof(assemblies));
7657
}
7758

7859
_serviceCollection.Scan(scan => scan
79-
.FromAssemblies(assemblies)
60+
// Scan distinct assemblies.
61+
.FromAssemblies(assemblies.Distinct())
8062
// Register classes that has a method marked with [EventHandler]
8163
.AddClasses(classes => classes.Where(type => EventHandlerAttributeMethod.IsFoundInType(type)))
8264
.AsSelf()
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
using System.Collections.Generic;
21
using System.Reflection;
32
using Microsoft.Extensions.DependencyInjection;
43

54
namespace Xer.Cqrs.Extensions.Microsoft.DependencyInjection
65
{
76
public interface ICqrsCommandHandlerSelector
87
{
9-
ICqrsCommandHandlerSelector ByInterface(Assembly assembly);
10-
ICqrsCommandHandlerSelector ByInterface(Assembly assembly, ServiceLifetime lifetime);
11-
ICqrsCommandHandlerSelector ByInterface(IEnumerable<Assembly> assemblies);
12-
ICqrsCommandHandlerSelector ByInterface(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime);
13-
ICqrsCommandHandlerSelector ByAttribute(Assembly assembly);
14-
ICqrsCommandHandlerSelector ByAttribute(Assembly assembly, ServiceLifetime lifetime);
15-
ICqrsCommandHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies);
16-
ICqrsCommandHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime);
8+
ICqrsCommandHandlerSelector ByInterface(params Assembly[] assemblies);
9+
ICqrsCommandHandlerSelector ByInterface(ServiceLifetime lifetime, params Assembly[] assemblies);
10+
ICqrsCommandHandlerSelector ByAttribute(params Assembly[] assemblies);
11+
ICqrsCommandHandlerSelector ByAttribute(ServiceLifetime lifetime, params Assembly[] assemblies);
1712
}
1813
}
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
using System.Collections.Generic;
21
using System.Reflection;
32
using Microsoft.Extensions.DependencyInjection;
43

54
namespace Xer.Cqrs.Extensions.Microsoft.DependencyInjection
65
{
76
public interface ICqrsEventHandlerSelector
87
{
9-
ICqrsEventHandlerSelector ByInterface(Assembly assembly);
10-
ICqrsEventHandlerSelector ByInterface(Assembly assembly, ServiceLifetime lifetime);
11-
ICqrsEventHandlerSelector ByInterface(IEnumerable<Assembly> assemblies);
12-
ICqrsEventHandlerSelector ByInterface(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime);
13-
ICqrsEventHandlerSelector ByAttribute(Assembly assembly);
14-
ICqrsEventHandlerSelector ByAttribute(Assembly assembly, ServiceLifetime lifetime);
15-
ICqrsEventHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies);
16-
ICqrsEventHandlerSelector ByAttribute(IEnumerable<Assembly> assemblies, ServiceLifetime lifetime);
8+
ICqrsEventHandlerSelector ByInterface(params Assembly[] assemblies);
9+
ICqrsEventHandlerSelector ByInterface(ServiceLifetime lifetime, params Assembly[] assemblies);
10+
ICqrsEventHandlerSelector ByAttribute(params Assembly[] assemblies);
11+
ICqrsEventHandlerSelector ByAttribute(ServiceLifetime lifetime, params Assembly[] assemblies);
1712
}
1813
}

Tests/Xer.Cqrs.Extensions.Microsoft.DependencyInjection.Tests/ServiceCollectionExtensionsTests.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
using System;
2-
using System.Linq;
3-
using System.Threading.Tasks;
42
using FluentAssertions;
53
using Microsoft.Extensions.DependencyInjection;
64
using Tests.Entities.CommandHandlers;
@@ -84,7 +82,7 @@ public void ShouldRegisterAllCommandHandlerAttributesInAssembly()
8482
{
8583
IServiceCollection serviceCollection = new ServiceCollection();
8684
serviceCollection.AddCqrsCore()
87-
.AddCommandHandlers(select => select.ByAttribute(_handlerAssembly));
85+
.AddCommandHandlers(select => select.ByAttribute(ServiceLifetime.Transient, _handlerAssembly));
8886
serviceCollection.AddSingleton(_outputHelper);
8987

9088
IServiceProvider serviceProvider = serviceCollection.BuildServiceProvider();

0 commit comments

Comments
 (0)