一个delegate中有已经被加了若干个方法,现只想执行其中的某一个方法。例:
public delegate void AllFunc();
class Test
{
  private AllFunc myDele;
  private void F1(){MessageBox.Show("F1");}
  private void F2(){MessageBox.Show("F2");}
  private static AllFunc InitialDele()
  {
    Test test=new Test();
    myDele+=new AllFunc(test.F1);
    myDele+=new AllFunc(test.F2);
  }
}class MyClass
{
  private AllFunc thisDel;
  public static void Main()
  {
    thisDel=Test.InitialDele();
    thisDel();//////////------------只想在此处执行类Test中的F2,能做到吗?
  }
}

解决方案 »

  1.   

    public delegate void AllFunc();
    class Test
    {
    public static AllFunc myDele;
    public static void F1(){MessageBox.Show("F1");}
    public static void F2(){MessageBox.Show("F2");}
    public static AllFunc InitialDele()
    {
    // Test test=new Test();
    myDele+=new AllFunc(F1);
    myDele+=new AllFunc(F2);
    return myDele;
    }
    } class MyClass
    {
    private static AllFunc thisDel;
    public static void Main()
    {
    thisDel=Test.InitialDele();
    Delegate[] arrDelegate = thisDel.GetInvocationList();
    foreach(AllFunc eh in arrDelegate)
    {
    if (eh.Method.Name=="F2")
    eh();
    }
    }
    }