每次注册类型时是否应创建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);
答案 0 :(得分:3)
此Tomas Mikolov可能回答了您的问题。它说如果您尝试重用生命周期管理器,则会出现一个异常:
生命周期管理器已注册。终身经理不能 要重用,请创建一个新的。
说明:执行以下操作时发生未处理的异常 当前的Web请求。请查看堆栈跟踪以获取更多信息 有关错误及其在代码中起源的信息。
异常详细信息:System.InvalidOperationException:生存期 经理已经注册。终身经理不能重复使用, 请创建一个新的。