结构(或任何DI组件)设置单例值

时间:2017-02-24 16:14:17

标签: c# .net dependency-injection asp.net-web-api2 structuremap

我正在使用StructureMap,但我认为任何DI组件或应该能够回答这个问题。

让我列出我认为可能存在的问题但是认为讨论它会很好。

  • 我想将IUser注入应用程序堆栈。我想要 在由structuremap
  • 创建时将其创建为单例
  • 我希望它有一个将在身份验证逻辑中调用的IUser.SetUser(权限perm,accessRules,rules)方法

问题

在IUser.SetUser(权限perm,accessRules,规则)中的方法被调用之后,让我们说在我的控制器层中。当IUser现在被注入较低层时,例如命令处理程序,服务,事件处理程序等,单例实例将保留属性集的值IUser.SetUser(权限perm,accessRules,规则)被调用正确吗?

从我对DI的看法来看似乎是一个简单的肯定,但我想要确认一下。

1 个答案:

答案 0 :(得分:1)

通常,Web应用程序中的所有对象实例都是根据一个请求创建的。 因此,如果您的IUser每个请求有生命周期,它会在当前请求期间保留所有数据。 如果您将IUser创建为整个应用程序的单例,它会将数据保留到app pool recycling