diff --git a/src/DispatchR/Extensions/ServiceCollectionExtensions.cs b/src/DispatchR/Extensions/ServiceCollectionExtensions.cs index 2999974..9783e6e 100644 --- a/src/DispatchR/Extensions/ServiceCollectionExtensions.cs +++ b/src/DispatchR/Extensions/ServiceCollectionExtensions.cs @@ -40,10 +40,12 @@ public static IServiceCollection AddDispatchR(this IServiceCollection services, var streamPipelineBehaviorType = typeof(IStreamPipelineBehavior<,>); var syncNotificationHandlerType = typeof(INotificationHandler<>); - var allTypes = configurationOptions.Assemblies.SelectMany(x => x.GetTypes()).Distinct() - .Where(p => + var allTypes = configurationOptions.Assemblies.SelectMany(x => x.GetTypes()) + .Distinct() + .Where(type => type is { IsClass: true, IsAbstract: false }) + .Where(type => { - var interfaces = p.GetInterfaces(); + var interfaces = type.GetInterfaces(); return interfaces.Length >= 1 && interfaces .Where(i => i.IsGenericType) diff --git a/src/DispatchR/Requests/IMediator.cs b/src/DispatchR/Requests/IMediator.cs index 4519e93..bcf764e 100644 --- a/src/DispatchR/Requests/IMediator.cs +++ b/src/DispatchR/Requests/IMediator.cs @@ -36,9 +36,7 @@ public IAsyncEnumerable CreateStream(IStreamRequ public async ValueTask Publish(TNotification request, CancellationToken cancellationToken) where TNotification : INotification { - var notificationsInDi = serviceProvider.GetRequiredService>>(); - - var notifications = Unsafe.As[]>(notificationsInDi); + var notifications = serviceProvider.GetRequiredService>>(); foreach (var notification in notifications) { var valueTask = notification.Handle(request, cancellationToken);