@@ -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 }
0 commit comments