namespace SmallInjector;
///
/// A small dependency injector to demonstrate the pattern.
///
public class Container : IContainer
{
private readonly Dictionary> _container = new();
///
public void RegisterType(bool isSingleton, TService instance = default) where TService : TInterface
{
if (!IsRegistered())
{
_container[typeof(TInterface)] = new List { new RegisteredType(typeof(TService), isSingleton, null) };
}
else
{
_container[typeof(TInterface)].Add(new RegisteredType(typeof(TService), isSingleton, null));
}
}
///
public void RegisterType(bool isSingleton, TService instance = default) => RegisterType(isSingleton, instance);
///
public TService Resolve() => (TService)Resolve(typeof(TService));
///
public bool IsRegistered() => IsRegistered(typeof(TService));
///
public bool IsRegistered(Type serviceType) => _container.ContainsKey(serviceType);
///
public IEnumerable