我应该为ASP.NET MVC1.0使用哪个Autofac版本。另外,有哪些示例可以通过存储库模式将其与ASP.NET MVC一起使用?
public class MyController : BaseController
{
private readonly IUser _user;
private readonly ICompany _company;
public MyController(IUser user, ICompany company)
{
_user = user;
_company = company;
}
public ActionResult Index()
{
// Actions
}
}发布于 2011-05-13 02:42:25
我决定在我的应用程序中使用StructureMap。下面是我为实现它所做的工作:
创建我自己的CustomFactory类:
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
if (controllerType == null)
{
return base.GetControllerInstance(controllerType);
}
try
{
return ObjectFactory.GetInstance(controllerType) as Controller;
}
catch (StructureMapException ex)
{
throw;
}
}
}创建一个Bootstrapper,使用StructureMap约定为我的程序集注册所有接口及其实现。(我在上面发布了一个blog post ):
public class StructureMapBootstrapper : IBootstrapper
{
private static bool hasStarted;
public void BootstrapStructureMap()
{
ObjectFactory.Initialize(x =>
{
x.AddRegistry<FactoryRegistry>();
});
}
public static void Restart()
{
if (hasStarted)
{
ObjectFactory.ResetDefaults();
}
else
{
Bootstrap();
hasStarted = true;
}
}
public static void Bootstrap()
{
new StructureMapBootstrapper().BootstrapStructureMap();
}
}
public class FactoryRegistry : Registry
{
public FactoryRegistry()
{
Scan(s =>
{
s.Assembly("Calendar.Library");
s.TheCallingAssembly();
s.AddAllTypesOf<IController>().NameBy(type => type.Name.Replace("Controller", "").ToLower());
s.WithDefaultConventions();
});
}
}在Global.asax.cs中注册StructureMap:
protected void Application_Start()
{
StructureMapBootstrapper.Bootstrap();
ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());
}https://stackoverflow.com/questions/5980759
复制相似问题