我想在我现在正在做的项目中应用依赖注入并使用 Unity。在 Global.asax 文件的事件中注册类型Application_Start
并将 Unity Conatiner 保留在 Application 对象全局变量中。但是,在解析演示者实例之前,我需要将当前 webform 的实例作为构造函数参数传递给演示者。我在页面的 OnInit 事件中执行此操作。
protected override void OnInit(EventArgs e)
{
IUnityContainer container = (IUnityContainer)
HttpContext.Current.Application["container"];
container.RegisterInstance<IAddRoleView>(this,
new ExternallyControlledLifetimeManager());
_presenter = container.Resolve<AddRolePresenter>();
base.OnInit(e);
}
我的问题是:
AddRoleView
服务请求后,实例会发生什么?- 它会被垃圾收集还是 Unity 容器在应用程序关闭之前始终保持引用,因为 Unity Conatiner 实例已保存在应用程序对象中?