IoC контейнер — Вікіпедія

Шаблон проєктування у вигляді UML діаграми

IoC контейнер — це шаблон проєктування, який дозволяє спростити впровадження залежностей між класами дотримуючись інверсії керування.

Стосунки

[ред. | ред. код]

Є реалізацією фабричного методу

Опис мовою C#

[ред. | ред. код]
class IoC  {   readonly IDictionary<Type, Type> types = new Dictionary<Type, Type>();    public void Register<TContract, TImplementation>()     {      types[typeof(TContract)] = typeof(TImplementation);   }    public T Resolve<T>()     {     return (T)Resolve(typeof(T));   }    public object Resolve(Type contract)    {     Type implementation = types[contract];     ConstructorInfo constructor = implementation.GetConstructors()[0];     ParameterInfo[] constructorParameters = constructor.GetParameters();     if (constructorParameters.Length == 0)      {        return Activator.CreateInstance(implementation);       }          List<object> parameters = new List<object>(constructorParameters.Length);     foreach (ParameterInfo parameterInfo in constructorParameters)      {         parameters.Add(Resolve(parameterInfo.ParameterType));     }      return constructor.Invoke(parameters.ToArray());    } }  class Program {     static void Main(string[] args)     {         var ioc = new IoC();         ioc.Register<ILogger, Logger>();         ioc.Register<ConsoleLogger, ConsoleLogger>();          ConsoleLogger objCOnsoleLogger = ioc.Resolve<ConsoleLogger>();            } } 

Див. також

[ред. | ред. код]

Джерела

[ред. | ред. код]