gpt4 book ai didi

asp.net-mvc - 我应该如何为 Unity 和 AutoMapper 实现 MVC Bootstrapper?

转载 作者:行者123 更新时间:2023-12-02 11:19:09 26 4
gpt4 key购买 nike

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

这里有一个不错的例子(http://weblogs.asp.net/rashid/archive/2009/02/17/use-bootstrapper-in-your-asp-net-mvc-application-and-reduce-code-smell.aspx),但是 UnityContainer 实现了 IDisposable,并且在该示例中它永远不会被清理。这个( Configuring Automapper in Bootstrapper violates Open-Closed Principle? )也是一个不错的例子,但他也没有处理 Unity/Disposable 问题。

这是 ( 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();
}
}

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

public class YourHttpApplication : HttpApplication
{
private IUnityContainer _container;

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

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

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

关于asp.net-mvc - 我应该如何为 Unity 和 AutoMapper 实现 MVC Bootstrapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com