通过下面的代码可以执行tt()这个函数,如果我想让dd执行完tt(),继续执行tt2()应该怎么办?(需要执行的方法名称是从字符串中读取出来的)protected void Page_Load(object sender, EventArgs e)
    {
        Wd wd = new Wd();
        wd.cheng();
    }
 public delegate void DD(object sender, EventArgs e);    public class test {
        public test() {         
        }        public void tt(object sender,EventArgs e) {
            System.Web.HttpContext.Current.Response.Write(String.Format("tt<br>"));
        }
        public void tt2(object sender, EventArgs e)
        {
            System.Web.HttpContext.Current.Response.Write(String.Format("tt2<br>"));
        }
    }    public class Wd {
     
        public void cheng() {
            Delegate dd;
            test tt=new test();                
            
            dd = Delegate.CreateDelegate(typeof(DD), tt, "tt");
            //dd = Delegate.CreateDelegate(typeof(DD), tt, "tt2");
            
            if (dd != null)
            {
                dd.DynamicInvoke(this, null);
            }
        }    }

解决方案 »

  1.   

    你直接写tt.tt2(....)不就行了嘛!反射,不应该随便炫耀的。
      

  2.   

    dd = Delegate.CreateDelegate(typeof(DD), tt, "tt");
                dd += Delegate.CreateDelegate(typeof(DD), tt, "tt2");
      

  3.   

     dd += Delegate.CreateDelegate(typeof(DD), tt, "tt2");
    不能这么用,出错........
      

  4.   

    Delegate dd, dd2;
    test tt=new test();                
    dd = Delegate.CreateDelegate(typeof(DD), tt, "tt");
    dd2 = Delegate.CreateDelegate(typeof(DD), tt, "tt2");
    if (dd != null)
    {
        dd.DynamicInvoke(this, null);
    }
    if (dd2 != null)
    {
        dd2.DynamicInvoke(this, null);
    }
      

  5.   

    string[] funcs = new string[] { "tt", "tt2" };
    Delegate dd;
    test tt=new test(); 
    foreach (string f in funcs){
      dd = Delegate.CreateDelegate(typeof(DD), tt, f);
      if (dd != null)
      {
        dd.DynamicInvoke(this, null);
      }
    }
      

  6.   

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            test tes = new test();
            string[] FunName = { "WriteOne", "WriteTwo" };
            foreach (string fun in FunName)
            {
                Delegate write;
                MethodInfo methodInfo = this.GetType().GetMethod(fun, BindingFlags.Public | BindingFlags.Instance);
                write = Delegate.CreateDelegate(typeof(WriteContent), tes, fun, false);
                write.DynamicInvoke(this, e);
            }    }
    }public class test
    {
        public test()
        {
        }    public void WriteOne(object sender, EventArgs e)
        {
            System.Web.HttpContext.Current.Response.Write(String.Format("tt<br>"));
        }
        public void WriteTwo(object sender, EventArgs e)
        {
            System.Web.HttpContext.Current.Response.Write(String.Format("tt2<br>"));
        }
    }public delegate void WriteContent(object sender, EventArgs e);
      

  7.   

      MethodInfo methodInfo = this.GetType().GetMethod(fun, BindingFlags.Public | BindingFlags.Instance);没用。。
      

  8.   

    浪费表情
     protected void Page_Load(object sender, EventArgs e)
        {     
            test tes = new test();
            string[] FunName = { "WriteOne", "WriteTwo" };
            foreach (string fun in FunName)
            {
                MethodInfo methodInfo = typeof(test).GetMethod(fun, BindingFlags.Public | BindingFlags.Instance);
                methodInfo.Invoke(tes, new object[] { sender, e });
            }    }
    一样能行。。怪异