
BuildServiceProvider
Check this link for Microsofts explanation of the Dependency Injection framework. You can easily use the .NET Core 6 Dependency Injection container in your (console) program. Add the package Microsoft.Extensions.DependencyInjection.
Create an instance of the ServiceCollection class and add your dependencies to this container.
# nullable disable
using Microsoft.Extensions.DependencyInjection;
// Create the service container
var builder = new ServiceCollection()
.AddSingleton<Application, Application>()
.AddSingleton<IAppConfig, AppConfig>()
.BuildServiceProvider();
Application app = builder.GetRequiredService<Application>();
interface IAppConfig
{
string Setting { get; }
}
class AppConfig : IAppConfig
{
public string Setting { get; }
public AppConfig()
{
Console.WriteLine("AppConfig constructed");
}
}
class Application
{
IAppConfig config;
public Application(IAppConfig config)
{
this.config = config;
Console.WriteLine("Application constructed");
}
}
Host.CreateDefaultBuilder
You can also make use of the Host.CreateDefaultBuilder method to create a default generic HostBuilder. This HostBuilder contains several default dependencies. Some of the more often used dependencies are shown in the picture below.

Use the code below for a minimal setup of your (console) program with the Default builder
# nullable disable
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
var host = CreateHostBuilder(args).Build();
Application app = host.Services.GetRequiredService<Application>();
static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureServices(
(_, services) => services
.AddSingleton<Application, Application>()
.AddSingleton<IAppConfig, AppConfig>());
}
interface IAppConfig
{
string Setting { get; }
}
class AppConfig : IAppConfig
{
public string Setting { get; }
public AppConfig()
{
Console.WriteLine("AppConfig constructed");
}
}
class Application
{
readonly IAppConfig config;
public Application(IAppConfig config, ILogger<Application> logger)
{
this.config = config;
logger.Log(LogLevel.Information, "Application constructed");
}
}
