Я пытаюсь создать маршрутизатор для веб-приложения (да, я знаю, что решения уже существуют).Как обратиться к методу?
До сих пор я получил это:
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
и как его называть?
Я предпочитаю строго типизированное решение, а не некоторые строфарные махинации.
Каким должен быть метод действия? –
@Martinho: А? «действие» в порядке. Мой вопрос о синтаксисе. В идеале я бы просто написал «новый маршрут» («pattern», UserController.Method), но C# не поддерживает такой синтаксис. – mpen