Skip to content

Commit a46dfed

Browse files
committed
Some tweaks
1 parent 48934c7 commit a46dfed

2 files changed

Lines changed: 14 additions & 20 deletions

File tree

src/Foundatio.Mediator.Abstractions/Mediator.cs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -195,29 +195,26 @@ private PublishAsyncDelegate[] GetAllApplicableHandlers(object message)
195195
private IEnumerable<HandlerRegistration> GetHandlersForType(Type type)
196196
{
197197
var list = _serviceProvider.GetKeyedServices<HandlerRegistration>(MessageTypeKey.Get(type)).ToList();
198-
if (list.Count > 0)
198+
if (!type.IsGenericType)
199199
return list;
200200

201-
// attempt open generic resolution
202-
if (type.IsGenericType)
201+
var genericDefinition = type.GetGenericTypeDefinition();
202+
var registration = _openGenericClosedCache.GetOrAdd(type, t =>
203203
{
204-
var genericDefinition = type.GetGenericTypeDefinition();
205-
var registration = _openGenericClosedCache.GetOrAdd(type, t =>
204+
var descriptors = _serviceProvider.GetServices<OpenGenericHandlerDescriptor>();
205+
foreach (var descriptor in descriptors)
206206
{
207-
var descriptors = _serviceProvider.GetServices<OpenGenericHandlerDescriptor>();
208-
foreach (var descriptor in descriptors)
207+
if (descriptor.MessageTypeGenericDefinition == genericDefinition)
209208
{
210-
if (descriptor.MessageTypeGenericDefinition == genericDefinition)
211-
{
212-
return ConstructClosedRegistration(t, descriptor);
213-
}
209+
return ConstructClosedRegistration(t, descriptor);
214210
}
215-
return null;
216-
});
211+
}
217212

218-
if (registration != null)
219-
return new[] { registration };
220-
}
213+
return null;
214+
});
215+
216+
if (registration != null)
217+
list.Add(registration);
221218

222219
return list;
223220
}

tests/Foundatio.Mediator.Tests/OpenGeneric/OpenGenericHandlerTests.cs renamed to tests/Foundatio.Mediator.Tests/OpenGenericHandlerTests.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
using System.Threading;
2-
using System.Threading.Tasks;
31
using Microsoft.Extensions.DependencyInjection;
4-
using Xunit;
52

6-
namespace Foundatio.Mediator.Tests.OpenGeneric;
3+
namespace Foundatio.Mediator.Tests;
74

85
public record UpdateEntity<T>(T Entity) : ICommand;
96
public record UpdateEntityPair<T1, T2>(T1 First, T2 Second) : ICommand;

0 commit comments

Comments
 (0)