我试图将global.asax中的路由注册过程抽象为引导程序。我的班级看起来像:
public class RegisterRoutes : IBootstrapperTask
{
private readonly RouteCollection routes;
public RegisterRoutes(RouteCollection routes)
{
this.routes = routes;
}
public RegisterRoutes() : this(RouteTable.Routes)
{
}
public void Execute()
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
我的global.asax看起来像:
protected void Application_Start()
{
Bootstrapper.Run();
}
我的简化引导程序看起来像:
public static class Bootstrapper
{
static Bootstrapper()
{
// wires up the container
}
public static void Run()
{
container.ResolveAll<IBootstrapperTask>().Each(t => t.Execute());
}
}
容器解析器很好但是当我尝试执行我得到的任务时:InvalidOperationException - 无法构造VirtualPathProvider类型。您必须配置容器以提供此值。
任何反馈都将不胜感激。
由于
答案 0 :(得分:1)
我认为团结正试图使用这个构造函数:
public RegisterRoutes(RouteCollection routes)
如果是这种情况,您需要显式配置它以使用参数less constructor或删除具有routes参数的构造函数。
PS。我不能声称上述内容是准确的,因为我的基础是我对统一的期望,在这种情况下行为与StructureMap相似。