我已经转移到一个具有 的项目public partial class AdminController
,还有 15 个其他类实现了这个部分类。我认为这样做是为了让项目可以通过路径访问许多"/admin/{methodname}"
路径。
主要部分类处理所有 15 个类的构造函数,因此具有 13 个构造函数依赖项。
我不认为这很漂亮,但我不确定如何整理它,以便每个类都可以拥有它需要的依赖项,但保持所有路由"/admin/{methodname}"
我已经转移到一个具有 的项目public partial class AdminController
,还有 15 个其他类实现了这个部分类。我认为这样做是为了让项目可以通过路径访问许多"/admin/{methodname}"
路径。
主要部分类处理所有 15 个类的构造函数,因此具有 13 个构造函数依赖项。
我不认为这很漂亮,但我不确定如何整理它,以便每个类都可以拥有它需要的依赖项,但保持所有路由"/admin/{methodname}"
考虑转换/admin
为MVC 区域,并让不同的控制器处理该区域内的不同路径。
我想说,将逻辑重构为更小的控制器,从而解决您过多的依赖问题并使用您自己的路由映射来处理路由问题。
你可以有一个 RouteDefinition 类,它包含一个元组(我之前说过 Hash,但我认为你需要两个以上的参数)
public static class RouteDefinitions
{
const List<Tuple<string,string,string> AdminRoutes = new List<Tuple<string,string,string>> {
Tuple.Create("fooroute", //route
"foocontroller", //corresponding controller
"fooaction"), //corresponding action
Tuple.Create("barroute", "barcontroller","baraction")
};
public static void AddRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
foreach(var adminRoute in AdminRoutes)
routes.MapRoute(adminRoute.Item1, string.Format("Admin/{0}", adminRoute.Item1) , new { controller = adminRoute.Item2, action = adminRoute.Item3 });
}
}
然后在你的Application_Start()
称呼中
RouteDefinitions.AddRoutes(RouteTable.Routes);