@@ -16,7 +16,6 @@ public class CodeLensProviderFactory
1616 private readonly CodeLensMethodInsightsProvider3 _codeLensMethodInsightsProvider3 ;
1717 private readonly CodeLensMethodInsightsProvider4 _codeLensMethodInsightsProvider4 ;
1818 private readonly CodeLensMethodInsightsProvider5 _codeLensMethodInsightsProvider5 ;
19- private readonly List < string > _registeredProviders = new ( ) ;
2019 private readonly Dictionary < string , BaseMethodInsightsProvider > _genericProvidersMap = new ( ) ;
2120
2221 public CodeLensProviderFactory (
@@ -43,7 +42,7 @@ CodeLensMethodInsightsProvider5 codeLensMethodInsightsProvider5
4342 InitializeGenericProvidersMap ( ) ;
4443 }
4544
46- public BaseMethodInsightsProvider GetFactory ( string lensTitle )
45+ public BaseMethodInsightsProvider GetProvider ( string lensTitle , List < string > usedGenericProviders )
4746 {
4847 if ( lensTitle != null )
4948 {
@@ -64,17 +63,22 @@ public BaseMethodInsightsProvider GetFactory(string lensTitle)
6463 return _slowEndpointMethodInsightsProvider ;
6564 }
6665 }
67- return GetNotUsedGenericMethodInsightsProvider ( ) ;
66+ return GetNotUsedGenericMethodInsightsProvider ( usedGenericProviders ) ;
6867 }
6968
70- private BaseMethodInsightsProvider GetNotUsedGenericMethodInsightsProvider ( )
69+ private BaseMethodInsightsProvider GetNotUsedGenericMethodInsightsProvider ( ICollection < string > usedGenericProviders )
7170 {
7271 var availableProvidersKeys = _genericProvidersMap . Where ( p =>
73- _registeredProviders . All ( p2 => ! p2 . Equals ( p . Key ) ) )
72+ usedGenericProviders . All ( p2 => ! p2 . Equals ( p . Key ) ) )
7473 . Select ( x => x . Key ) . ToList ( ) ;
7574
75+ if ( availableProvidersKeys . Count == 0 )
76+ {
77+ // skip the code lens if all 5 generic available providers are used already
78+ return null ;
79+ }
7680 var availableProviderKey = availableProvidersKeys . Count > 0 ? availableProvidersKeys [ 0 ] : _genericProvidersMap . First ( ) . Key ;
77- _registeredProviders . Add ( availableProviderKey ) ;
81+ usedGenericProviders . Add ( availableProviderKey ) ;
7882 return _genericProvidersMap [ availableProviderKey ] ;
7983 }
8084
0 commit comments