Пример #1
0
        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));
        }
Пример #2
0
        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));
        }