我应该如何为Unity和AutoMapper实现MVC引导程序?
为我的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),但UnityContainer实现了IDisposable,在这个例子中它永远不会被清理。 这(在引导程序中配置自动映射器违反开放原则?)也是一个体面的例子,但他也没有处理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();
}
}
或者你可以从你的引导程序返回容器,保存对它的引用并将其放置在应用程序结束。
public class YourHttpApplication : HttpApplication
{
private IUnityContainer _container;
protected void Application_Start()
{
_container = Bootstrapper.Run();
}
protected void Application_End()
{
_container.Dispose();
}
}
取决于你的偏好我猜。 除此之外,问题中列出的任何引导示例应该是引导应用程序的好选择。
链接地址: http://www.djcxy.com/p/48245.html上一篇: How should I implement an MVC Bootstrapper for Unity and AutoMapper?