0

我正在编写一个 Web 框架,一个简洁的功能 (IMO) 是您可以为内联函数定义网址,如下所示:

[Url(@"/profile:(?<username>\w+)")]
public void Profile(string username)

然后该函数将在您访问时自动被调用/profile:someusernamesomeusername并将被传递到函数中并自动进行类型转换。

但是对于那些喜欢旧的做事方式的人,你仍然可以在一个地方指定所有的路线:

List<Route> Routes = new List<Route> {
    new Route(@"/user:(?<id>\d+)", "UserController.View")
};

现在我只是想决定应该以什么顺序处理这两种不同的方法。

哦,将全局路由放在首位意味着您可以在内联路由抢夺它们之前预先处理所有特殊情况,但是 OTOH,如果您将全局路由放在前面,您就不能将所有后备路由放在那里。所以我不能完全决定哪个顺序更好......

我猜的另一个解决方案是使用优先级队列,用户可以为某些路由赋予更高或更低的优先级。

4

1 回答 1

2

在我看来,更具体的路线应该优先于一般路线,仅仅是因为它们指定了更具体的行为。

顺便说一句,我喜欢这个特性,因为它从全局定义中删除了特定的路由并且不会弄乱它,所以你有一个更好的概览,你没有在方法中指定它们,而是在它们的实际使用位置,这有助于提高可读性.

于 2011-01-02T01:06:26.927 回答