Table of Contents

StartupFactory<TStartup> Class

Definition

Namespace
Codebelt.Bootstrapper
Assemblies
Codebelt.Bootstrapper.dll
Source
src/Codebelt.Bootstrapper/StartupFactory.cs

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

Name Description
StartupFactory(IServiceCollection, IConfiguration, IHostEnvironment)

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

Properties

Name Description
Instance

Provides access to an instance of the specified TStartup.

See Also

IStartupFactory<TStartup>