using System.Collections.Generic;
using System.Collections.ObjectModel;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public static void Main()
var host = Host.CreateDefaultBuilder()
.ConfigureServices((_, services) =>
services.AddSingleton<Example>();
var scope = host.Services.CreateScope();
var svcs = scope.ServiceProvider;
svcs.GetRequiredService<Example>().Run();
private IWidgetContainer widget_container;
public Example(IWidgetContainer widgetContainer){
widget_container.AddNew("Apple", 4);
widget_container.AddNew("Grapefruit",7);
Console.WriteLine(widget_container.Validatate());
widget_container.AddNew("Pear",5);
widget_container.AddNew("Kiwi", 8);
Console.WriteLine(widget_container.Validatate());
public interface IWidgetContainer{
IWidget AddNew(string widget_name, int size);
ReadOnlyCollection<IWidget> Widgets {get;}
List<string> Validatate();
public interface IWidget{
public interface IIdFactory{