Я пытаюсь создать маршрутизатор для веб-приложения (да, я знаю, что решения уже существуют).
Пока у меня есть это:
class Route
{
public static RegexOptions DefaultOptions = RegexOptions.IgnoreCase;
Regex regex;
Type controller;
MethodInfo action;
public Route(string pattern, Type controller)
{
this.regex = new Regex(string.Format("^(?:{0})$", pattern), DefaultOptions);
this.controller = controller;
}
}
И это:
Route[] routes = {
new Route(@"/user:(?<id>\d+)", typeof(UserController))
};
Когда URL соответствует этому регулярному выражению, он должен вызвать метод action
в классе controller
.Я думаю, что typeof()
- единственный способ передать класс, но как насчет метода?
Я думаю, MethodInfo
- это объект, который я хочу, потому что с этим я должен иметь возможность вызыватьэто, но с точки зрения API, каким должен быть 3-й аргумент конструктора Route
, и как мы должны его называть?
Я предпочитаю строго типизированное решение, а не некоторые строковые махинации.