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