c# - 如何在 MVC 应用程序中设置 Unity 容器

标签 c# asp.net-mvc unity-container ioc-container

我在 ASP.NET MVC3 应用程序中使用统一容器时遇到问题。

我有几个带有接口(interface)及其实现的项目。所有具体类型绑定(bind)的接口(interface)都在应用程序启动方法中执行。

这个方法有几个问题:

1) 如何处理 MVC 应用程序不直接需要但它使用的类需要的类型注册(存储库使用 ContextManager 检索上下文实例)。如果此类位于未被 mvc 应用程序使用的程序集中,我将不得不添加对它的引用。

2) 如何共享配置好的容器?我是否应该使用静态类创建单独的程序集来存储由 mvc 应用程序容器创建的?

3) 什么样的unity容器使用方式可能会带来跨线程问题?如何注册单例,以便它们仅在该线程(Web 服务器调用)等中可用。

最佳答案

  1. 您应该将所有程序集显式引用到您的 ASP.NET MVC 应用程序。它是 onion architecture 中的最外层并且允许了解内层。无论如何,所有程序集都必须位于 bin 文件夹中,以便 ASP.NET MVC 应用程序以某种方式了解它们。只需将您的 DI 框架配置外部化到 ASP.NET MVC 应用程序中的一个位置。
  2. 参见 1。
  3. 每线程存储在 ASP.NET 中可能是危险的。 Per HTTP Context更好。

关于c# - 如何在 MVC 应用程序中设置 Unity 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7261342/

相关文章:

c# - 使用方法但没有字段或属性的类实例化有多快?

entity-framework - Unity 的 PerResolveLifetimeManager,用于存储库、工作单元和 Entity Framework DBContext

c# - 字符串上带有美元的动态对象

c# - Xamarin.Forms:如何避免在 MVVM 绑定(bind)中对字符串进行硬编码

javascript - 在 ASP.NET MVC 应用程序中的何处包含 javascript 运行时相关代码的最佳实践

asp.net-mvc - 当浏览器调整大小时,防止页面上的各个部分被重新定位的机制是什么

c# - 未将对象引用设置为 LINQ to SQL 查询中的实例

c# - 在 asp.net 应用程序中使用的类库中正确实现缓存

c# - 让数据库连接保持打开状态?

inversion-of-control - 这在 Prism/Unity : Container. Resolve<ShellPresenter>() 中意味着什么