如何强制Unity创建新实例?

时间:2012-08-21 14:38:45

标签: c# wcf design-patterns dependency-injection unity-container

使用Unity Application块,当我们在WCF上下文中调用UnityContainer.Resolve<T>()方法时,如何强制Unity配置创建对象的新实例?

2 个答案:

答案 0 :(得分:10)

Unity中的{p> Lifetime Manager就是您所需要的。默认情况下,Unity使用TransientLifetimeManager

  

TransientLifetimeManager。对于此生命周期管理器,Unity会为每次调用Resolve或ResolveAll方法创建并返回所请求类型的新实例。默认情况下,此生命周期管理器用于使用RegisterType方法注册的所有类型,除非您指定其他生命周期管理器。

如果您需要使用其他生命周期管理器,只需在Register方法中指定:

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

答案 1 :(得分:1)

在没有RegisterType的情况下使用a LifetimeManager每次注入时都应该注入一个新类型的实例

来自MSDN

  

如果未指定生命周期的值,则会注册该类型   对于瞬态生命周期,这意味着将有一个新实例   在每次调用Resolve时创建

相关问题