通过下面的代码可以执行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);
}
} }
{
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);
}
} }
dd += Delegate.CreateDelegate(typeof(DD), tt, "tt2");
不能这么用,出错........
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);
}
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);
}
}
{
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);
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 });
} }
一样能行。。怪异