大家好,碰到为方法传递参数的问题,希望有朋友能指点一下:
代码如下,在实例化的时候需要将方法传递过去.
class Class1
    {        
        public Class1(Action<object> action, Func<object, bool> canDo)
        {
            .....
        }
    }public class Class2
{
        ......
        public DO()
        {            
            cmd = new Class1(Search, CanExecute);//实例化
        }
        public void Search(object parameter)
        {.....}
        public bool CanDo(object parameter)
        {.....}
}我现在想在实例化cmd的时候能指定参数,这个应该怎样做呢?

解决方案 »

  1.   

    Class1 cmd=new Class1(action,canDo); action,canDo要先声明!
      

  2.   

    不好意思,笔误了.
    cmd = new Class1(Search, CanExecute);
    应该改为
    cmd = new Class1(Search, CanDO);
    这2个方法都在下面声明了.
    我现在想做的是,给它们指定参数.
      

  3.   

    在new class1的时候把参数也传进去,不就可以了?
      

  4.   

    天!这是什么行为?!那Class1有嘛用?
    是我晕了还是楼主被绕进去了,完成什么需求。
      

  5.   

    class Class1
      {   
      public Class1(Action<object> action, Func<object, bool> canDo,params object [] param)
      {
      .....
      }
      }param为可变参数
      

  6.   

    Class1 就相当于个代理,接受传递过来的方法,然后执行.
      

  7.   


    其实我是想在传递 action 和 canDO 的时候分别给他们指定参数,类似直接调用
    action(name)
    canDo(true)
      

  8.   

    Class1中有对应的delegate 成员吧...?
    public Class1(Action<object> action, Func<object, bool> canDo)构造中把传过来的方法存在delegate成员中..Class1中对应的调用 action 和canDo的方法怎么写的?
      

  9.   

    //把方法当作参数传递
                DisplayProcess(Filter);
                //匿名委托
                DisplayProcess(delegate(Process process) { return process.WorkingSet64 >= 20 * 1024 * 1024; });
                //lambda表达式
                DisplayProcess(process =>  process.WorkingSet64 >= 20 * 1024 * 1024);
    private static void DisplayProcess(Predicate<Process> match)
            {
                foreach(var process in Process.GetProcesses())
                {
                }     
            }
            private static bool Filter(Process process)
            {
                return process.WorkingSet64 >= 20 * 1024 * 1024;
            }