feat: Dynamic command loader, default command with module registry

This commit is contained in:
2025-04-20 12:38:27 +02:00
parent a7cae86254
commit cea3d11a41
13 changed files with 373 additions and 3 deletions

34
Common/TypeRegistrar.cs Normal file
View File

@ -0,0 +1,34 @@
using Microsoft.Extensions.DependencyInjection;
using Spectre.Console.Cli;
namespace Automancer.Common;
public sealed class TypeRegistrar : ITypeRegistrar
{
private readonly IServiceCollection _builder;
public TypeRegistrar(IServiceCollection builder)
{
_builder = builder;
}
public ITypeResolver Build()
{
return new TypeResolver(_builder.BuildServiceProvider());
}
public void Register(Type service, Type implementation)
{
_builder.AddSingleton(service, implementation);
}
public void RegisterInstance(Type service, object implementation)
{
_builder.AddSingleton(service, implementation);
}
public void RegisterLazy(Type service, Func<object> factory)
{
_builder.AddSingleton(service, _ => factory());
}
}