日期:2014-05-18 浏览次数:21024 次
public class MyClass
{
public static int Method1(int p1)
{
return p1;
}
public static string Method2(string p1,string p2)
{
return p1 + p2;
}
public static List<int> Method3(int p1, int p2)
{
List<int> list = new List<int>();
list.Add(p1);
list.Add(p2);
return list;
}
}
//添加定义的方法,但不执行
array.Add(MyClass.Method1(1));
array.Add(MyClass.Method2("2","3"));
array.Add(MyClass.Method3(4, 5));
//循环出来挨个执行
foreach (var item in array)
{
item();
}
List<Action> array = new List<Action>();
//添加定义的方法,但不执行
array.Add(() => MyClass.Method1(1));
array.Add(() => MyClass.Method2("2","3"));
array.Add(() => MyClass.Method3(4, 5));
//循环出来挨个执行
foreach (var item in array)
{
item();
}
------解决方案--------------------
考虑使用Dictionary<TMethod, TParams[]>,其中TMethod可以定义成TResult delegate(T params[])形式的委托,大概思路如此,具体类型可以再考虑
------解决方案--------------------
泛型也是具体情况下具体处理.如果不判断或者强制转换,你怎知道你要处理的集合究竟是何种类型,又怎能统一的去处理这批数据呢?
------解决方案--------------------
学习2楼
------解决方案--------------------
你这就是一个参数表加方法名的列表。
用反射不就正好么。
------解决方案--------------------
public delegate TResult MethodDelegateHandle<TResult, TParams>(params TParams[] args);
------解决方案--------------------
嗯,上面的方法其实都不错,只是都是场合性的,也就是完成lz现有的要求没啥问题
但是lz的要求一旦继续深入下去,应该算是一个小型的语法解释引擎了
比如 "1+2*method1(参数1,参数2)-Method2(参数3)"
------解决方案--------------------