Unity - это один из нескольких контейнеров DI для .NET .Его можно использовать для составления графов объектов, когда рассматриваемые типы следуют принципу обращения зависимостей .
Самый простой способ сделать это - использовать Конструктор Injection pattern:
public class Foo : IFoo
{
private readonly IBar bar;
public Foo(IBar bar)
{
if (bar == null)
throw new ArgumentNullException("bar");
this.bar = bar;
}
// Use this.bar for something interesting in the class...
}
Теперь вы можете настроить Unity в корне композиции приложения :
container.RegisterType<IFoo, Foo>();
container.RegisterType<IBar, Bar>();
Это фаза Register фазы Регистрация шаблона разрешения разрешения .В фазе Resolve container
будет Auto-wire граф объектов без дальнейшей настройки:
var foo = container.Resolve<IFoo>();
Это работает автоматически, потому что статическая структура классоввовлекает всю информацию, необходимую контейнеру для построения графа объекта.