Jon*_*ant 7 asp.net-mvc unity-container bootstrapper automapper
为我的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,在这个例子中它永远不会被清除.这(在Bootstrapper中配置自动映射违反了开放 - 封闭原则?)也是一个不错的例子,但他也没有处理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();
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以从引导程序返回容器,保留对其的引用并将其处置在应用程序端。
public class YourHttpApplication : HttpApplication
{
private IUnityContainer _container;
protected void Application_Start()
{
_container = Bootstrapper.Run();
}
protected void Application_End()
{
_container.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
我想这取决于你的喜好。除此之外,问题中列出的任何引导示例都应该是引导应用程序的不错选择。
归档时间: |
|
查看次数: |
2699 次 |
最近记录: |