You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.Cli/Console/Helpers/AutofacTypeRegistrar.cs

31 lines
822 B

using Autofac;
using Spectre.Console.Cli;
namespace Recyclarr.Cli.Console.Helpers;
internal class AutofacTypeRegistrar(ContainerBuilder builder, Action<ILifetimeScope> assignScope)
: ITypeRegistrar
{
public void Register(Type service, Type implementation)
{
builder.RegisterType(implementation).As(service).SingleInstance();
}
public void RegisterInstance(Type service, object implementation)
{
builder.RegisterInstance(implementation).As(service);
}
public void RegisterLazy(Type service, Func<object> factory)
{
builder.Register(_ => factory()).As(service).SingleInstance();
}
public ITypeResolver Build()
{
var container = builder.Build();
assignScope(container);
return new AutofacTypeResolver(container);
}
}