55using System . Collections . Generic ;
66using System . Linq ;
77using System . Reflection ;
8+ using Ninject . Parameters ;
89using Ninject . Planning . Bindings ;
10+ using Ninject . Web . AspNetCore . Parameters ;
911using Ninject . Web . AspNetCore . Planning ;
1012
1113namespace Ninject . Web . AspNetCore
@@ -91,14 +93,16 @@ public object GetKeyedService(Type serviceType, object serviceKey)
9193 {
9294 EnsureNotAnyKey ( serviceKey , serviceType ) ;
9395 result = _resolutionRoot . TryGet ( serviceType ,
94- metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , true ) ) ;
96+ metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , true ) ,
97+ new ServiceKeyParameter ( serviceKey ) ) ;
9598 }
9699 else
97100 {
98101 // Ninject is not evaluating metadata constraint when resolving a IEnumerable<T>, see KernelBase.UpdateRequest
99102 // Therefore, need to implement a workaround to not instantiate here bindings with a different servicekey value
100103 result = ConvertToTypedEnumerable ( elementType ,
101- _resolutionRoot . GetAll ( elementType , metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , false ) ) ) ;
104+ _resolutionRoot . GetAll ( elementType , metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , false ) ,
105+ new ServiceKeyParameter ( serviceKey ) ) ) ;
102106 }
103107
104108 return result ;
@@ -115,14 +119,16 @@ public object GetRequiredKeyedService(Type serviceType, object serviceKey)
115119 if ( ! IsListType ( serviceType , out var elementType ) )
116120 {
117121 EnsureNotAnyKey ( serviceKey , serviceType ) ;
118- return _resolutionRoot . Get ( serviceType , metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , true ) ) ;
122+ return _resolutionRoot . Get ( serviceType , metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , true ) ,
123+ new ServiceKeyParameter ( serviceKey ) ) ;
119124 }
120125 else
121126 {
122127 // Ninject is not evaluating metadata constraint when resolving a IEnumerable<T>, see KernelBase.UpdateRequest
123128 // Therefore, need to implement a workaround to not instantiate here bindings with a different servicekey value
124129 return ConvertToTypedEnumerable ( elementType ,
125- _resolutionRoot . GetAll ( elementType , metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , false ) ) ) ;
130+ _resolutionRoot . GetAll ( elementType , metadata => metadata . DoesMetadataMatchServiceKey ( serviceKey , false ) ,
131+ new ServiceKeyParameter ( serviceKey ) ) ) ;
126132 }
127133 }
128134
0 commit comments