我正在尝试编写某种强类型路由系统。想象一下,我有一个带有方法 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.
}
}