Как вы можете заставить 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.