Utapau is a lightweight library with extension methods for built-in .Net Core dependency injection container.
services
.AddSingleton<IService, FirstService>(nameof(FirstService)) // register named dependency
.AddSingleton<IService, SecondService>(nameof(SecondService)) // register named dependency
.AddSingleton<IService, ThirdService>(sp => new ThirdService( // register named dependency using factory
sp.GetRequiredService<IService>(nameof(FirstService)), // resolve named dependency
sp.GetRequiredService<IService>(nameof(SecondService)) // resolve named dependency
), nameof(ThirdService));
services
.AddSingleton<Service>()
.AddFactory<Service>() // registers Func<Service>
.AddLazy<Service>(); // registers Lazy<Service>
public interface IProvider<TService>
{
TService Instance { get; }
}
services
.AddSingleton<Service>()
.AddProvider<Service>(); // registers IProvider<Service>
services.ResolveAllServices(); // resolves all services registered in service collection instance