问题描述:提供一组签名相同的方法, 由于方法的个数不固定,希望放在一个List中,供调用程序循环调用。
例子:对已各字符串进行不同方式的加工,如更换字符、删除字符等多个方法, 在调用过程中,自动调用所有方法,得到不同方法的调用结果。我现在是把所有方法通过delegate 放到一个List中, 但很遗憾, foreach 和 FunCon.Funs[]都不支持函数组.哪位有别的思路?

解决方案 »

  1.   

    假设方法签名为
    int funcA(string input)
    {}List<Func<string,int>> FuncList = new List<Func<string,int>>();
      

  2.   

    public delegate string delString(string str);
    delString del=new delString(fun1);
    del+=fun2;
    ... ...
    fun1()
    {}
    fun2()
    {}
    ... ...list<string> result=new list<string>();
    public void DeverseOperationString(delString del,string opertionStr)
    {
      delegate[] del_list=del.GetInvocationList();
      foreach(Delegate del in del_list)
      {
       delString eachDel=(delString)del;
       result.add(eachDel(opertionStr));
      }
    }
      

  3.   

    在使用范型重写后, foreach 可以达到自动遍历delegate 列表了。楼上的应该没有问题。谢谢。