ある種の厳密に型指定されたルーティング システムを作成しようとしています。文字列を受け取って返すメソッド A を持つクラスがあると想像してください
public class SomeClass
{
public string MethodA(string str)
{
return string.Format("SomeClass :: MethodA {0}", str);
}
}
そして、メインメソッドを次のようにしたい
class Program
{
static void Main(string[] args)
{
var col = new SomeCollection();
col.Add<SomeClass>("url", c => c.MethodA("test")); //Bind MethodA to "url"
}
}
だから私の質問は:
- メソッド署名を追加する必要がありますか?
- SomeCollection で MethodA を呼び出すにはどうすればよいですか?
みたいな感じになると思います
public class SomeCollection
{
public void Add<TController> (string url, Func<TController, string> exp)
{
// Add func to dictionary <url, funcs>
}
public void FindBestMatchAndExecute (Request request)
{
//Search url in collection and invoke it's method.
//Method params we can extract from request.
}
}