From bf7253ea186ea5e3e33fb3289a9ebdd8d8ce9988 Mon Sep 17 00:00:00 2001 From: shreyas jejurkar Date: Sat, 6 Feb 2021 22:59:32 +0530 Subject: [PATCH 1/2] Removed OfType usage. Less allocations and much faster --- .../MvcCoreServiceCollectionExtensions.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs index 7946b4b882dc..892442eb61a3 100644 --- a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs +++ b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs @@ -65,7 +65,18 @@ public static IMvcCoreBuilder AddMvcCore(this IServiceCollection services) private static void ConfigureDefaultFeatureProviders(ApplicationPartManager manager) { - if (!manager.FeatureProviders.OfType().Any()) + var controllerFeaturePresent = false; + + foreach(var feature in manager.FeatureProviders) + { + if(feature.GetType() == typeof(ControllerFeatureProvider)) + { + controllerFeaturePresent = true; + break; + } + } + + if(!controllerFeaturePresent) { manager.FeatureProviders.Add(new ControllerFeatureProvider()); } From f76ea3e4f570708fe332edb7d404621857c3183f Mon Sep 17 00:00:00 2001 From: Shreyas Jejurkar Date: Wed, 10 Feb 2021 12:09:02 +0530 Subject: [PATCH 2/2] Addressed PR feedback. Corrected the `if` condition. --- .../DependencyInjection/MvcCoreServiceCollectionExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs index 892442eb61a3..c3caa3b8e38e 100644 --- a/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs +++ b/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs @@ -69,7 +69,7 @@ private static void ConfigureDefaultFeatureProviders(ApplicationPartManager mana foreach(var feature in manager.FeatureProviders) { - if(feature.GetType() == typeof(ControllerFeatureProvider)) + if(feature is ControllerFeatureProvider) { controllerFeaturePresent = true; break;