Table of Contents

Class StartupFactory<TStartup>

Namespace
Codebelt.Bootstrapper
Assembly
Codebelt.Bootstrapper.dll

The default implementation of IStartupFactory<TStartup>.

public class StartupFactory<TStartup> : IStartupFactory<TStartup> where TStartup : StartupRoot

Type Parameters

TStartup
Inheritance
StartupFactory<TStartup>
Implements
IStartupFactory<TStartup>

Examples

The following example shows how StartupFactory<TStartup> activates a StartupRoot partner from the host's IServiceCollection, configuration, and environment, then surfaces it through the IStartupFactory<TStartup>.Instance property. The factory is what UseBootstrapperStartup<TStartup> registers, so consumer code resolves the singleton instead of constructing the startup directly.

using Codebelt.Bootstrapper;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace StartupFactoryDemo;

public class MyStartup : StartupRoot
{
    public MyStartup(IConfiguration configuration, IHostEnvironment environment) : base(configuration, environment)
    {
    }

    public override void ConfigureServices(IServiceCollection services)
    {
    }
}

public static class Program
{
    public static void Main()
    {
        using var host = Host.CreateDefaultBuilder()
            .UseBootstrapperStartup<MyStartup>()
            .Build();

        var factory = (StartupFactory<MyStartup>)host.Services.GetRequiredService<IStartupFactory<MyStartup>>();
        var startup = factory.Instance;
    }
}

Constructors

StartupFactory(IServiceCollection, IConfiguration, IHostEnvironment)

Initializes a new instance of the StartupFactory<TStartup> class.

public StartupFactory(IServiceCollection services, IConfiguration configuration, IHostEnvironment environment)

Parameters

services IServiceCollection

The dependency injected IServiceCollection.

configuration IConfiguration

The dependency injected IConfiguration.

environment IHostEnvironment

The dependency injected IHostEnvironment.

Properties

Instance

Provides access to an instance of the specified TStartup.

public TStartup Instance { get; }

Property Value

TStartup

A reference to the object of type StartupRoot.

See Also

IStartupFactory<TStartup>