我们应该每次都创建一个新的终身经理实例吗?

问题描述 投票:0回答:1

是否应在每次注册类型时创建LifetimeManager的新实例?

container.RegisterType<IFoo1, Foo1>(new HierarchicalLifetimeManager());
container.RegisterType<IFoo2, Foo2>(new HierarchicalLifetimeManager());
container.RegisterType<IFoo3, Foo3>(new HierarchicalLifetimeManager());
...
container.RegisterType<IFoo99, Foo99>(new HierarchicalLifetimeManager());

或者是否应该重复使用LifeTime的所有注册?

var defaultLifetimeManager = new HierarchicalLifetimeManager();

container.RegisterType<IFoo1, Foo1>(defaultLifetimeManager);
container.RegisterType<IFoo2, Foo2>(defaultLifetimeManager);
container.RegisterType<IFoo3, Foo3>(defaultLifetimeManager);
...
container.RegisterType<IFoo99, Foo99>(defaultLifetimeManager);
c# unity-container
1个回答
3
投票

这个answer可能回答你的问题。它说如果你试图重用终身经理,你会得到一个例外:

终身经理已经注册。终身经理不能重复使用,请创建一个新的。

描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:生命周期管理器已注册。终身经理不能重复使用,请创建一个新的。

© www.soinside.com 2019 - 2024. All rights reserved.