From 4634681ec8271a2ff2a4c959a8471fc90702f553 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 8 Dec 2020 08:43:03 +1300 Subject: [PATCH] Enable nullable on HostFactoryResolver (#45513) --- .../src/HostFactoryResolver.cs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.HostFactoryResolver/src/HostFactoryResolver.cs b/src/libraries/Microsoft.Extensions.HostFactoryResolver/src/HostFactoryResolver.cs index bb095c3..440444e 100644 --- a/src/libraries/Microsoft.Extensions.HostFactoryResolver/src/HostFactoryResolver.cs +++ b/src/libraries/Microsoft.Extensions.HostFactoryResolver/src/HostFactoryResolver.cs @@ -4,6 +4,8 @@ using System; using System.Reflection; +#nullable enable + namespace Microsoft.Extensions.Hosting { internal class HostFactoryResolver @@ -14,22 +16,22 @@ namespace Microsoft.Extensions.Hosting public static readonly string CreateWebHostBuilder = nameof(CreateWebHostBuilder); public static readonly string CreateHostBuilder = nameof(CreateHostBuilder); - public static Func ResolveWebHostFactory(Assembly assembly) + public static Func? ResolveWebHostFactory(Assembly assembly) { return ResolveFactory(assembly, BuildWebHost); } - public static Func ResolveWebHostBuilderFactory(Assembly assembly) + public static Func? ResolveWebHostBuilderFactory(Assembly assembly) { return ResolveFactory(assembly, CreateWebHostBuilder); } - public static Func ResolveHostBuilderFactory(Assembly assembly) + public static Func? ResolveHostBuilderFactory(Assembly assembly) { return ResolveFactory(assembly, CreateHostBuilder); } - private static Func ResolveFactory(Assembly assembly, string name) + private static Func? ResolveFactory(Assembly assembly, string name) { var programType = assembly?.EntryPoint?.DeclaringType; if (programType == null) @@ -43,11 +45,11 @@ namespace Microsoft.Extensions.Hosting return null; } - return args => (T)factory.Invoke(null, new object[] { args }); + return args => (T)factory!.Invoke(null, new object[] { args })!; } // TReturn Factory(string[] args); - private static bool IsFactory(MethodInfo factory) + private static bool IsFactory(MethodInfo? factory) { return factory != null && typeof(TReturn).IsAssignableFrom(factory.ReturnType) @@ -56,7 +58,7 @@ namespace Microsoft.Extensions.Hosting } // Used by EF tooling without any Hosting references. Looses some return type safety checks. - public static Func ResolveServiceProviderFactory(Assembly assembly) + public static Func? ResolveServiceProviderFactory(Assembly assembly) { // Prefer the older patterns by default for back compat. var webHostFactory = ResolveWebHostFactory(assembly); @@ -94,13 +96,13 @@ namespace Microsoft.Extensions.Hosting return null; } - private static object Build(object builder) + private static object? Build(object builder) { var buildMethod = builder.GetType().GetMethod("Build"); return buildMethod?.Invoke(builder, Array.Empty()); } - private static IServiceProvider GetServiceProvider(object host) + private static IServiceProvider? GetServiceProvider(object? host) { if (host == null) { @@ -108,7 +110,7 @@ namespace Microsoft.Extensions.Hosting } var hostType = host.GetType(); var servicesProperty = hostType.GetProperty("Services", DeclaredOnlyLookup); - return (IServiceProvider)servicesProperty.GetValue(host); + return (IServiceProvider?)servicesProperty?.GetValue(host); } } } -- 2.7.4