using System;
using System.Collections.Generic;
using System.Linq;
namespace SmallInjector
{
///
/// A small dependency injector to demonstrate the pattern.
///
public class Container : IContainer
{
private readonly Dictionary> _container = new Dictionary>();
///
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