结构(或任何 DI 组件)设置单例值
Structure (Or any DI component) setting singleton values
我正在使用StructureMap,但我认为任何DI组件或应该都可以回答这个问题。
让我列出我认为可能存在的问题,但认为说出来会很好。
- 我想将 IUser 注入应用程序堆栈。我想要
由 structuremap
创建时将其创建为单例
- 我希望它有一个 IUser.SetUser(permissions perm, accessRules, rules) 方法,该方法将在身份验证逻辑中调用
问题
在 IUser.SetUser(permissions perm, accessRules, rules) 中的方法被调用后让我们在我的控制器层中说。当 IUser 现在被注入命令处理程序、服务、事件处理程序等较低层时,单例实例将保留属性集的值 IUser.SetUser(permissions perm, accessRules, rules) was called correct?
从我对 DI 的看法来看,这似乎是一个简单的肯定,但我想我会要求确定。
通常,Web 应用程序中的所有对象实例都是根据一个请求创建的。
因此,如果您的 IUser
具有每个请求的生命周期,它将保留当前请求期间的所有数据。
如果您将 IUser
创建为整个应用程序的单例,它将保留数据直到 app pool recycling.
我正在使用StructureMap,但我认为任何DI组件或应该都可以回答这个问题。
让我列出我认为可能存在的问题,但认为说出来会很好。
- 我想将 IUser 注入应用程序堆栈。我想要 由 structuremap 创建时将其创建为单例
- 我希望它有一个 IUser.SetUser(permissions perm, accessRules, rules) 方法,该方法将在身份验证逻辑中调用
问题
在 IUser.SetUser(permissions perm, accessRules, rules) 中的方法被调用后让我们在我的控制器层中说。当 IUser 现在被注入命令处理程序、服务、事件处理程序等较低层时,单例实例将保留属性集的值 IUser.SetUser(permissions perm, accessRules, rules) was called correct?
从我对 DI 的看法来看,这似乎是一个简单的肯定,但我想我会要求确定。
通常,Web 应用程序中的所有对象实例都是根据一个请求创建的。
因此,如果您的 IUser
具有每个请求的生命周期,它将保留当前请求期间的所有数据。
如果您将 IUser
创建为整个应用程序的单例,它将保留数据直到 app pool recycling.