我正在编写一个 Web 框架,一个简洁的功能 (IMO) 是您可以为内联函数定义网址,如下所示:
[Url(@"/profile:(?<username>\w+)")]
public void Profile(string username)
然后该函数将在您访问时自动被调用/profile:someusername
,someusername
并将被传递到函数中并自动进行类型转换。
但是对于那些喜欢旧的做事方式的人,你仍然可以在一个地方指定所有的路线:
List<Route> Routes = new List<Route> {
new Route(@"/user:(?<id>\d+)", "UserController.View")
};
现在我只是想决定应该以什么顺序处理这两种不同的方法。
哦,将全局路由放在首位意味着您可以在内联路由抢夺它们之前预先处理所有特殊情况,但是 OTOH,如果您将全局路由放在前面,您就不能将所有后备路由放在那里。所以我不能完全决定哪个顺序更好......
我猜的另一个解决方案是使用优先级队列,用户可以为某些路由赋予更高或更低的优先级。