@@ -25,42 +25,45 @@ internal static IServiceCollection AddInstanceTransient<TInterface, TImplementat
2525 where TInterface : class
2626 where TImplementation : class , TInterface
2727 {
28+ var patterns = routePatterns . ToList ( ) ;
2829 services . AddTransient < TInterface , TImplementation > ( ) ;
2930 var router = new MessageHandlerRouter
3031 {
3132 Type = typeof ( TImplementation ) ,
3233 Exchange = exchange ,
33- RoutePatterns = routePatterns . ToList ( )
34+ RoutePatterns = patterns
3435 } ;
3536 services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
36- services . AddMessageHandlerOrderingModel < TImplementation > ( routePatterns , exchange , order ) ;
37+ services . AddMessageHandlerOrderingModel < TImplementation > ( patterns , exchange , order ) ;
3738 return services ;
3839 }
3940
4041 internal static IServiceCollection AddInstanceSingleton < TInterface , TImplementation > ( this IServiceCollection services , IEnumerable < string > routePatterns , string exchange , int order )
4142 where TInterface : class
4243 where TImplementation : class , TInterface
4344 {
45+ var patterns = routePatterns . ToList ( ) ;
4446 services . AddSingleton < TInterface , TImplementation > ( ) ;
4547 var router = new MessageHandlerRouter
4648 {
4749 Type = typeof ( TImplementation ) ,
4850 Exchange = exchange ,
49- RoutePatterns = routePatterns . ToList ( )
51+ RoutePatterns = patterns
5052 } ;
5153 services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
52- services . AddMessageHandlerOrderingModel < TImplementation > ( routePatterns , exchange , order ) ;
54+ services . AddMessageHandlerOrderingModel < TImplementation > ( patterns , exchange , order ) ;
5355 return services ;
5456 }
5557
5658 static IServiceCollection AddMessageHandlerOrderingModel < TImplementation > ( this IServiceCollection services , IEnumerable < string > routePatterns , string exchange , int order )
5759 where TImplementation : class
5860 {
59- MessageHandlerOrderingModelExists < TImplementation > ( services , routePatterns , exchange , order ) ;
61+ var patterns = routePatterns . ToList ( ) ;
62+ MessageHandlerOrderingModelExists < TImplementation > ( services , patterns , exchange , order ) ;
6063 var messageHandlerOrderingModel = new MessageHandlerOrderingModel
6164 {
6265 Exchange = exchange ,
63- RoutePatterns = routePatterns ,
66+ RoutePatterns = patterns ,
6467 Order = order ,
6568 MessageHandlerType = typeof ( TImplementation )
6669 } ;
@@ -70,19 +73,20 @@ static IServiceCollection AddMessageHandlerOrderingModel<TImplementation>(this I
7073
7174 static void MessageHandlerOrderingModelExists < TImplementation > ( IServiceCollection services , IEnumerable < string > routePatterns , string exchange , int order )
7275 {
76+ var patterns = routePatterns . ToList ( ) ;
7377 var messageHandlerOrderingModel = services . FirstOrDefault ( x => x . ServiceType == typeof ( MessageHandlerOrderingModel )
7478 && x . Lifetime == ServiceLifetime . Singleton
7579 && ( ( MessageHandlerOrderingModel ) x . ImplementationInstance ) . MessageHandlerType == typeof ( TImplementation )
7680 && ( string . Equals ( ( ( MessageHandlerOrderingModel ) x . ImplementationInstance ) . Exchange , exchange , StringComparison . OrdinalIgnoreCase )
7781 || ( exchange is null && ( ( MessageHandlerOrderingModel ) x . ImplementationInstance ) . Exchange is null ) )
7882 && ( ( MessageHandlerOrderingModel ) x . ImplementationInstance ) . Order != order
79- && routePatterns . Intersect ( ( ( MessageHandlerOrderingModel ) x . ImplementationInstance ) . RoutePatterns ) . Any ( ) ) ;
83+ && patterns . Intersect ( ( ( MessageHandlerOrderingModel ) x . ImplementationInstance ) . RoutePatterns ) . Any ( ) ) ;
8084 if ( messageHandlerOrderingModel is null )
8185 {
8286 return ;
8387 }
8488
85- var intersectRoutePatterns = routePatterns . Intersect ( ( ( MessageHandlerOrderingModel ) messageHandlerOrderingModel . ImplementationInstance ) . RoutePatterns ) ;
89+ var intersectRoutePatterns = patterns . Intersect ( ( ( MessageHandlerOrderingModel ) messageHandlerOrderingModel . ImplementationInstance ) . RoutePatterns ) ;
8690 throw new ArgumentException ( $ "A message handler { nameof ( TImplementation ) } for an exchange { exchange } has already been configured for route patterns[{ string . Join ( ", " , intersectRoutePatterns ) } ] with an order { order } .") ;
8791 }
8892 }
0 commit comments