public static FactoryResolutionResult ResolveWebHostBuilderFactory(Assembly assembly) { var programType = assembly?.EntryPoint?.DeclaringType; if (programType == null) { return(FactoryResolutionResult.NoEntryPoint()); } var factory = programType?.GetTypeInfo().GetDeclaredMethod(CreateWebHostBuilder); if (factory == null) { return(FactoryResolutionResult.NoCreateWebHostBuilder(programType)); } return(FactoryResolutionResult.Succeded(args => (IWebHostBuilder)factory.Invoke(null, new object[] { args }), programType)); }
public static FactoryResolutionResult <TWebhost, TWebhostBuilder> ResolveWebHostBuilderFactory <TWebhost, TWebhostBuilder>(Assembly assembly) { var programType = assembly?.EntryPoint?.DeclaringType; if (programType == null) { return(FactoryResolutionResult <TWebhost, TWebhostBuilder> .NoEntryPoint()); } var factory = programType.GetTypeInfo().GetDeclaredMethod(CreateWebHostBuilder); if (factory == null || !typeof(TWebhostBuilder).IsAssignableFrom(factory.ReturnType) || factory.GetParameters().Length != 1 || !typeof(string []).Equals(factory.GetParameters()[0].ParameterType)) { return(FactoryResolutionResult <TWebhost, TWebhostBuilder> .NoCreateWebHostBuilder(programType)); } return(FactoryResolutionResult <TWebhost, TWebhostBuilder> .Succeded(args => (TWebhostBuilder)factory.Invoke(null, new object[] { args }), programType)); }