私はWebアプリケーション用のルータを作成しようとしています(はい、ソリューションは既に存在します)。方法の参照方法は?
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がその正規表現と一致すると、そのクラスcontroller
方法action
を呼び出す必要があります。私はtypeof()
がクラスを渡すことができる唯一の方法だと思っていますが、方法についてはどうですか?
私はそれを呼び出すことができるはずですが、APIの観点から、Route
コンストラクタの3番目の引数はどのようなものでなければならないと思います。
私はいくつかの文字列の俗語ではなく、強く型付けされた解決法を好んでいます。
アクションメソッドはどのように呼び出す必要がありますか? –
@Martinho:ハァッか。 「行動」はいいです。私の質問は構文についてです。理想的には、 'new Route(" pattern "、UserController.Method)'と書くだけですが、C#はそのような構文をサポートしていません。 – mpen