如果只是想执行该方法的话,建议使用反射
我晕,写到 最后 变成 一个 lisp 解释器 了。。
首先定义类型
public class host
{
public string name = "what ";
public string f(string name)
{
return name + "fuck ";
}
public string next(string s)
{
return string.Format("{0} the ", s);
}
}
FunctionFactory.AddPredefinedType(typeof(host));
//可行
var funct = FunctionFactory.Create<host, string>("(f(next(name)))");
var r = funct(new host());
//失败
var func = FunctionFactory.Create<int, int, string>("f(q1-1).next(q3)", new[] { "q1", "q3" });
var result = func(10, 1);
(f(next(name))) => 是可行的。
兄弟 还是用 CSharpCodeProvider 来做吧, 表达式树 顶不住啊。。
建议你去 看下 微软的 DynamicQuery。http://code.msdn.microsoft.com/DynamicQuery-f65f6a4d