C# 使用Unity为每个应用程序部件提供两个版本的依赖关系的最佳方法?

C# 使用Unity为每个应用程序部件提供两个版本的依赖关系的最佳方法?,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,我使用的是Unity和MVC5.NET4.6 我有数据服务 这取决于存储库 这又取决于一个连接 连接需要用户名/令牌才能建立连接,或者需要用户/应用程序guid才能建立到数据源的连接 MVC控制器和Web API都使用数据服务,但是数据服务不应该关心如何使用它 当我使用MVC控制器时,用户名和令牌位于 索赔 当连接的应用程序使用API时,它必须传入 用户GUID和应用程序GUI 当我将数据服务注入控制器时,我将更新所有依赖项、注入存储库的数据服务和注入连接的存储库 问题是,从当前控制器获

我使用的是Unity和MVC5.NET4.6

  • 我有数据服务
  • 这取决于存储库
  • 这又取决于一个连接
连接需要用户名/令牌才能建立连接,或者需要用户/应用程序guid才能建立到数据源的连接

MVC控制器和Web API都使用数据服务,但是数据服务不应该关心如何使用它

  • 当我使用MVC控制器时,用户名和令牌位于 索赔
  • 当连接的应用程序使用API时,它必须传入 用户GUID和应用程序GUI
当我将数据服务注入控制器时,我将更新所有依赖项、注入存储库的数据服务和注入连接的存储库


问题是,从当前控制器获取用户连接变量的最佳模式是什么?

您可以配置两个不同的容器,一个用于MVC,另一个用于Web API。或者,如果您有一个需要在MVC和Web API之间共享的服务(例如单例服务),您可以为您已经拥有的容器创建两个子容器(调用
container.CreateChildContainer()
),并且只在子容器中注册连接。然后,您可以区分MVC和Web API使用的连接