是否应在每次注册类型时创建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);
这个answer可能回答你的问题。它说如果你试图重用终身经理,你会得到一个例外:
终身经理已经注册。终身经理不能重复使用,请创建一个新的。
描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.InvalidOperationException:生命周期管理器已注册。终身经理不能重复使用,请创建一个新的。