@@ -105,14 +105,18 @@ public Task Handle(VoidGenericPing<T> request, CancellationToken cancellationTok
105105 }
106106 }
107107
108+ public class PongExtension : Pong
109+ {
110+
111+ }
108112
109- public class TestClass1PingRequestHandler : IRequestHandler < VoidGenericPing < Pong > >
113+ public class TestClass1PingRequestHandler : IRequestHandler < VoidGenericPing < PongExtension > >
110114 {
111115 private readonly Dependency _dependency ;
112116
113117 public TestClass1PingRequestHandler ( Dependency dependency ) => _dependency = dependency ;
114118
115- public Task Handle ( VoidGenericPing < Pong > request , CancellationToken cancellationToken )
119+ public Task Handle ( VoidGenericPing < PongExtension > request , CancellationToken cancellationToken )
116120 {
117121 _dependency . CalledSpecific = true ;
118122 return Task . CompletedTask ;
@@ -246,14 +250,32 @@ public async Task Should_resolve_closed_handler_if_defined()
246250 var services = new ServiceCollection ( ) ;
247251 services . AddSingleton ( dependency ) ;
248252 services . AddMediatR ( cfg => cfg . RegisterServicesFromAssemblies ( Assembly . GetExecutingAssembly ( ) ) ) ;
249- services . AddTransient < IRequestHandler < VoidGenericPing < Pong > > , TestClass1PingRequestHandler > ( ) ;
253+ services . AddTransient < IRequestHandler < VoidGenericPing < PongExtension > > , TestClass1PingRequestHandler > ( ) ;
250254 var serviceProvider = services . BuildServiceProvider ( ) ;
251255 var mediator = serviceProvider . GetService < IMediator > ( ) ! ;
252256
253- var request = new VoidGenericPing < Pong > ( ) ;
257+ var request = new VoidGenericPing < PongExtension > ( ) ;
254258 await mediator . Send ( request ) ;
255259
256260 dependency . Called . ShouldBeFalse ( ) ;
257261 dependency . CalledSpecific . ShouldBeTrue ( ) ;
258262 }
263+
264+ [ Fact ]
265+ public async Task Should_resolve_open_handler_if_not_defined ( )
266+ {
267+ var dependency = new Dependency ( ) ;
268+ var services = new ServiceCollection ( ) ;
269+ services . AddSingleton ( dependency ) ;
270+ services . AddMediatR ( cfg => cfg . RegisterServicesFromAssemblies ( Assembly . GetExecutingAssembly ( ) ) ) ;
271+ services . AddTransient < IRequestHandler < VoidGenericPing < PongExtension > > , TestClass1PingRequestHandler > ( ) ;
272+ var serviceProvider = services . BuildServiceProvider ( ) ;
273+ var mediator = serviceProvider . GetService < IMediator > ( ) ! ;
274+
275+ var request = new VoidGenericPing < Pong > ( ) ;
276+ await mediator . Send ( request ) ;
277+
278+ dependency . Called . ShouldBeTrue ( ) ;
279+ dependency . CalledSpecific . ShouldBeFalse ( ) ;
280+ }
259281}
0 commit comments