@@ -12,6 +12,11 @@ internal sealed class Mediator(IServiceProvider serviceProvider, ILogger<IMediat
1212 internal readonly struct Sender < RESPONSE > ( Mediator mediator , ILogger < IMediator > ? logger , object ? key )
1313 : ISend < RESPONSE >
1414 {
15+ internal ValueTask < RESPONSE > InvokeSend ( IRequest < RESPONSE > request , CancellationToken token )
16+ => ( ValueTask < RESPONSE > ) this . GetType ( ) . Methods [ nameof ( Send ) ]
17+ . Find ( [ request . GetType ( ) , typeof ( RESPONSE ) ] , ( request , token ) ) !
18+ . Invoke ( this , ( request , token ) ) ! ;
19+
1520 public async ValueTask < RESPONSE > Send < REQUEST > ( REQUEST request , CancellationToken token = default )
1621 where REQUEST : notnull
1722 {
@@ -74,22 +79,16 @@ public ValueTask<RESPONSE> Send<RESPONSE>(IRequest<RESPONSE> request, Cancellati
7479 {
7580 this . Validate ( request ) ;
7681
77- var requestType = request . GetType ( ) ;
78- var sender = this . Request < RESPONSE > ( ) ;
79- return ( ValueTask < RESPONSE > ) sender . GetType ( ) . Methods [ nameof ( sender . Send ) ]
80- . Find ( [ requestType , typeof ( ValueTask < RESPONSE > ) ] , ( null as object , request , token ) ) !
81- . Invoke ( sender , ( request , token ) ) ! ;
82+ var sender = new Sender < RESPONSE > ( this , logger , null ) ;
83+ return sender . InvokeSend ( request , token ) ;
8284 }
8385
8486 public ValueTask < RESPONSE > Send < RESPONSE > ( object key , IRequest < RESPONSE > request , CancellationToken token = default )
8587 {
8688 this . Validate ( key , request ) ;
8789
88- var requestType = request . GetType ( ) ;
89- var sender = this . Request < RESPONSE > ( key ) ;
90- return ( ValueTask < RESPONSE > ) sender . GetType ( ) . Methods [ nameof ( sender . Send ) ]
91- . Find ( [ requestType , typeof ( ValueTask < RESPONSE > ) ] , ( null as object , request , token ) ) !
92- . Invoke ( sender , ( request , token ) ) ! ;
90+ var sender = new Sender < RESPONSE > ( this , logger , key ) ;
91+ return sender . InvokeSend ( request , token ) ;
9392 }
9493
9594 public void Validate < REQUEST > ( REQUEST request )
@@ -127,7 +126,7 @@ public Task _Dispatch<REQUEST>(object? key, REQUEST request, CancellationToken t
127126 catch ( AggregateException error )
128127 {
129128 logger ? . LogAggregateException ( error , "ERROR: {Mediator} rule {Rule}" , [ nameof ( Mediator ) , ruleName ] ) ;
130- return Task . FromException ( error . InnerExceptions . Count == 1 ? error . InnerException ! : error ) ;
129+ return Task . FromException ( error . InnerExceptions . Count is 1 ? error . InnerException ! : error ) ;
131130 }
132131 catch ( Exception error )
133132 {
0 commit comments