@@ -173,24 +173,28 @@ private async Task<bool> IsEnabledAsync<TContext>(string feature, TContext appCo
173173 Parameters = featureFilterConfiguration . Parameters
174174 } ;
175175
176- if ( filter is IFeatureFilter featureFilter )
176+ BindSettings ( filter , context , filterIndex ) ;
177+
178+ //
179+ // IContextualFeatureFilter
180+ if ( useAppContext )
177181 {
178- BindSettings ( filter , context , filterIndex ) ;
182+ ContextualFeatureFilterEvaluator contextualFilter = GetContextualFeatureFilter ( featureFilterConfiguration . Name , typeof ( TContext ) ) ;
179183
180- if ( await featureFilter . EvaluateAsync ( context ) . ConfigureAwait ( false ) == targetEvaluation ) {
184+ if ( contextualFilter != null &&
185+ await contextualFilter . EvaluateAsync ( context , appContext ) . ConfigureAwait ( false ) == targetEvaluation )
186+ {
181187 enabled = targetEvaluation ;
182188
183189 break ;
184190 }
185191 }
186- else
187- {
188- ContextualFeatureFilterEvaluator contextualFilter = GetContextualFeatureFilter ( featureFilterConfiguration . Name , typeof ( TContext ) ) ;
189-
190- BindSettings ( filter , context , filterIndex ) ;
191192
192- if ( contextualFilter != null &&
193- await contextualFilter . EvaluateAsync ( context , appContext ) . ConfigureAwait ( false ) == targetEvaluation )
193+ //
194+ // IFeatureFilter
195+ if ( filter is IFeatureFilter featureFilter )
196+ {
197+ if ( await featureFilter . EvaluateAsync ( context ) . ConfigureAwait ( false ) == targetEvaluation )
194198 {
195199 enabled = targetEvaluation ;
196200
@@ -358,6 +362,11 @@ private ContextualFeatureFilterEvaluator GetContextualFeatureFilter(string filte
358362
359363 IFeatureFilterMetadata metadata = GetFeatureFilterMetadata ( filterName , appContextType ) ;
360364
365+ if ( metadata == null )
366+ {
367+ return null ;
368+ }
369+
361370 return new ContextualFeatureFilterEvaluator ( metadata , appContextType ) ;
362371 }
363372 ) ;
0 commit comments