我应该如何为 Unity 和 AutoMapper 实现 MVC Bootstrapper?

2024-02-28

为我的 MVC 2 应用程序创建引导程序的最佳方法是什么?我正在使用 Unity 和 AutoMapper,并希望尽可能抽象它们的加载和配置。

一个不错的例子在这里(http://weblogs.asp.net/rashid/archive/2009/02/17/use-bootstrapper-in-your-asp-net-mvc-application-and-reduce-code-smell.aspx http://weblogs.asp.net/rashid/archive/2009/02/17/use-bootstrapper-in-your-asp-net-mvc-application-and-reduce-code-smell.aspx),但是 UnityContainer 实现了 IDisposable,并且在该示例中它永远不会被清理。这 (在Bootstrapper中配置Automapper违反了开闭原则? https://stackoverflow.com/questions/1807298/configuring-automapper-in-bootstrapper-violates-open-closed-principle/1810728#1810728)也是一个不错的例子,但他也没有处理 Unity/Disposable 问题。

Here's (http://www.dominicpetifer.co.uk/Blog/42/put-an-ioc-powered-bootstrapper-in-your-asp-net-mvc-application http://www.dominicpettifer.co.uk/Blog/42/put-an-ioc-powered-bootstrapper-in-your-asp-net-mvc-application)另一个关于如何制作 Bootstrapper 的好例子,但同样没有解决 Unity/Disposable 问题。

我考虑过将 Bootstrapper 对象保留在静态变量中并使其实现 IDisposable,但这听起来不对。


如果您在 Bootstrapper 类中保留对容器的引用,则可以将其处置在应用程序端。

public static class Bootstrapper
{
    private static IUnityContainer _container;

    public static void Run()
    {
        _container = new UnityContainer();

        // Configure container here...
    }

    public static void Dispose()
    {
        _container.Dispose();
    }
}

public class YourHttpApplication : HttpApplication
{
    protected void Application_Start()
    {
        Bootstrapper.Run();
    }

    protected void Application_End()
    {
        Bootstrapper.Dispose();
    }
}

或者您可以从引导程序返回容器,保留对其的引用并将其处置在应用程序端。

public class YourHttpApplication : HttpApplication
{
    private IUnityContainer _container;

    protected void Application_Start()
    {
        _container = Bootstrapper.Run();
    }

    protected void Application_End()
    {
        _container.Dispose();
    }
}

我想这取决于你的喜好。除此之外,问题中列出的任何引导示例都应该是引导应用程序的不错选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何为 Unity 和 AutoMapper 实现 MVC Bootstrapper? 的相关文章

随机推荐

  • Firebase 部署缓慢并收到警告

    当我尝试运行 Firebase部署 时 它卡在这行代码上 i deploying functions i functions ensuring necessary APIs are enabled functions all necessa
  • ui.router:如何从 URL 中省略默认参数

    我定义了以下状态 stateProvider https github com angular ui ui router angularui router stateProvider state byTeams url team id ye
  • 为什么显示.GIF图像会不断增加内存?

    我正在展示简单的代码示例 我在 a 中展示了一张 gif 图像Jlabel 运行程序时 任务管理器显示内存不断增加 为什么会发生这种情况 Edited 请尝试此代码 在显示玻璃按钮上 玻璃面板显示有 gif 图像 其中有一个隐藏玻璃按钮 并
  • Chrome 移动模拟。 Selenium 和 Devtools 的窗口大小不同

    需要测试网站的责任 代码示例取自here http chromedriver chromium org mobile emulation 在页面底部 面对的是 硒以不同的尺寸 分辨率打开镀铬窗口 比我预期的要好 看起来 PixelRatio
  • 将 int64_t 转换为 time_duration

    我想转让一个boost posix time ptime通过网络作为boost int64 t 根据将 boost posix time ptime 转换为 int64 的方法 https stackoverflow com questio
  • 在 Spring Security 和 Hibernate 中使用 jdbcAuthentication

    我刚刚完成了一个 Spring 应用程序 它基于inMemoryAuthentication 现在 在验证所有工作正常后 我想使用 JDBC 身份验证 我有三种类来处理与数据库的连接 HibernateConfig 基于这篇博文中提供的代码
  • 获取子列表上有条件的列表

    我有两个列表 listA 是一个列表MyClassA和列表BMyClassB MyClassA具有以下属性 Id Name MyClassB具有以下属性 Id Name Active 我的班级ID An item MyClassA可以有一项
  • 在 React + Typescript 中将 ref 传递给子级

    我有一个应用程序 我需要在其中管理对输入的关注 为此我使用 Reactref 我有两个输入想要移动到一个单独的组件中 现在它们看起来如下
  • 如何从决策树中获取每个节点的百分比

    如何创建一个包含下图中每个节点的百分比的表格 library rpart library rattle library rpart plot library RColorBrewer fit lt rpart Species data ir
  • 如何在 GitHub 上创建自己的存储库?

    我在 GitHub 上有一个公共存储库 我想复制 复制它并基于此存储库开发一个新项目 但我不想影响它现在的样子 我尝试使用 GitHub UI 分叉它 但没有执行任何操作 我不认为你可以分叉你自己的仓库 克隆它并将其推送到新的存储库很好 但
  • pow 函数使用 ThreadPoolExecutor 阻塞所有线程

    尽管关于 ThreadPoolExecutor 的第一个示例使用了 pow 函数 https docs python org 3 library concurrent futures html https docs python org 3
  • 在Ember-cli项目中使用ES6库

    我有一个使用 Ember Cli 的小型 EmberJS 应用程序 我的应用程序有一个私有 ES6 库 它是一个 Bower 依赖项 基本上 我想要的是导入库并在任何我想要的地方使用它 如果我没记错的话 我应该将库转译为我的brocfile
  • Elastic Search,是否可以获取搜索结果集中特定文档的索引?

    我知道要在结果集中显示的特定文档的 ID 但我不知道它将显示在结果的哪一页上 弹性搜索是否可以告诉它返回特定文档所在的页面 我的猜测是这是不可能的 我当前的方法是在仅加载文档 ID 后运行查询 并返回一个非常大的 全部 查询结果集 我在此列
  • htaccess:将所有请求重定向到不同的域(没有查询参数)

    如何将 sub domain com 上的所有请求 无论正在请求哪个页面 重定向到 newdomain com 目前我有 Redirect 301 http www newdomain com 当请求传入domain com shop pr
  • -Dlog4j.formatMsgNoLookups=true 或 -Dlog4j2.formatMsgNoLookups=true - 哪个是正确的?

    哪一个是正确的 Dlog4j formatMsgNoLookups true Dlog4j2 formatMsgNoLookups true 或者两者都在工作 Ref log4j https dev to composite how to
  • 写入文件直到达到一定大小

    我正在为站点地图编写 XML 文件 Google 表示该文件不能大于 10MB 我想知道是否有一种方法可以写入文件 直到满足特定的文件大小 然后关闭它并打开一个新文件 我拥有它 一旦达到一定数量的条目 它将关闭文件并打开一个新文件 我正在使
  • 在 Grails 域类中设置日期字段的默认值

    我正在尝试为 a 设置默认值DateDomain 类中的字段 我可以用defaultValue in the mapping配置 但它不起作用Date字段 我已经尝试过String and Integer并且效果很好 这是一个例子 clas
  • 使用 LINQ 过滤列表

    我有一个从外部应用程序返回的人员列表 并且我正在本地应用程序中创建一个排除列表 以便我可以选择手动从列表中删除人员 我有一个我创建的复合键 它对两者都是通用的 我想找到一种使用我的列表从我的列表中删除人员的有效方法 e g class Pe
  • Azure 事件中心如何处理不同的事件?

    不同的事件类型通过主题 队列和消息头的某种组合来区分 在 Kafka 中 记录流仍然被分离为主题 https kafka apache org intro https kafka apache org intro 在浏览 Azure 事件中
  • 我应该如何为 Unity 和 AutoMapper 实现 MVC Bootstrapper?

    为我的 MVC 2 应用程序创建引导程序的最佳方法是什么 我正在使用 Unity 和 AutoMapper 并希望尽可能抽象它们的加载和配置 一个不错的例子在这里 http weblogs asp net rashid archive 20