Example #1
0
        public AppLoaderFunc Create(AppLoaderFunc nextLoader)
        {
            return((name, errors) =>
            {
                Assembly assembly = null;

                string error = null;

                try
                {
                    assembly = _host.GetEntryPoint();

                    if (assembly == null)
                    {
                        error = "Unable to resolve the application entry point.";
                    }
                }
                catch (Exception ex)
                {
                    error = ex.Message;
                }

                if (assembly == null)
                {
                    Trace.TraceError(error);

                    return app =>
                    {
                        app.Run(async context =>
                        {
                            context.Response.ContentType = "text/plain";
                            await context.Response.WriteAsync(error);
                        });
                    };
                }

                // determine actual startup class to load
                if (string.IsNullOrEmpty(name))
                {
                    var startupType = assembly.DefinedTypes.SingleOrDefault(t => string.Equals(t.Name, "Startup", StringComparison.OrdinalIgnoreCase));
                    if (startupType != null)
                    {
                        name = startupType.AssemblyQualifiedName;
                    }
                }

                // pass through to other loaders
                var config = nextLoader.Invoke(name, errors);

                // don't wrap null result
                if (config == null)
                {
                    return null;
                }

                // but do wrap configuration if startup was found
                return app =>
                {
                    app.Properties["host.AppName"] = assembly.GetName().Name;

                    var resolver = _host.GetService <Func <string, object> >(HostServices.ResolveAssemblyReference);

                    app.Properties[HostServices.ResolveAssemblyReference] = resolver;

                    config(app);
                };
            });
        }
Example #2
0
        /// <summary>
        /// Create a new chained app loader.
        /// </summary>
        /// <param name="nextLoader"></param>
        /// <returns></returns>
        public virtual AppLoaderFunc Create(AppLoaderFunc nextLoader)
        {
            var loader = new DefaultLoader(nextLoader, _activator.Activate);

            return(loader.Load);
        }
Example #3
0
 /// <summary>
 /// Create a new chained app loader.
 /// </summary>
 /// <param name="nextLoader"></param>
 /// <returns></returns>
 public virtual AppLoaderFunc Create(AppLoaderFunc nextLoader)
 {
     var loader = new DefaultLoader(nextLoader, _activator.Activate);
     return loader.Load;
 }