Как вы можете заставить Unity создать новый экземпляр?

Используя блок приложения Unity, как вы можете заставить конфигурацию Unity создать новый экземпляр объекта, когда мы вызываем UnityContainer.Resolve<T>() метод в контексте WCF?

2 ответа

Решение

Пожизненный менеджер в Unity это все что тебе нужно. По умолчанию Unity используют TransientLifetimeManager:

TransientLifetimeManager. Для этого времени жизни менеджер Unity создает и возвращает новый экземпляр запрошенного типа для каждого вызова метода Resolve или ResolveAll. Этот менеджер времени жизни используется по умолчанию для всех типов, зарегистрированных с помощью метода RegisterType, если вы не укажете другой менеджер времени жизни.

Если вам нужно использовать другой менеджер жизни, просто укажите в Register метод:

var container = new UnityContainer();
container.RegisterType<IMyType, MyType>(new PerResolveLifetimeManager()); 

С помощью RegisterType без a LifetimeManager должен вводить новый экземпляр типа каждый раз, когда он вводится

Из MSDN:

Если вы не укажете значение для времени жизни, тип будет зарегистрирован для временного времени жизни, что означает, что новый экземпляр будет создаваться при каждом вызове Resolve.

Другие вопросы по тегам