有个想法 如何实现呢
假如说有这样一个类
- C# code
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; } }
然后想实现这样的一个操作,把方法添加进一个数据,但不执行,添加完毕后然后再循环出来挨个执行
- C# code
//添加定义的方法,但不执行array.Add(MyClass.Method1(1));array.Add(MyClass.Method2("2","3"));array.Add(MyClass.Method3(4, 5));//循环出来挨个执行foreach (var item in array){ item();}
这应该如何去实现呢,别告诉我用if一个一个判断。。。 就像委托一样的添加最后一并执行,但是委托貌似和我想实现的有点不同的,可以看出我执行的方法中不仅返回类型不同,参数也不同。而且执行的时候是参数值是不一样的,委托的话是执行的时候传入一个参数,各个方法执行时的参数值都一样的。
这个怎么弄呢?
[解决办法]
- C# code
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楼
[解决办法]
你这就是一个参数表加方法名的列表。
用反射不就正好么。
[解决办法]
[解决办法]
定义委托:
- C# code
public delegate TResult MethodDelegateHandle<TResult, TParams>(params TParams[] args);
[解决办法]
嗯,上面的方法其实都不错,只是都是场合性的,也就是完成lz现有的要求没啥问题
但是lz的要求一旦继续深入下去,应该算是一个小型的语法解释引擎了
比如 "1+2*method1(参数1,参数2)-Method2(参数3)"
[解决办法]