在主程序中有一个事件
Main()
{
   Class c=new Class();
   //一般的事件绑定是这样的,这里使用了匿名方法,现在希望这个事件绑定的多方法是从配置文件里取的(配置文件中的方法签名与事件委托的签名是相同的)
   c.TestEvent+=delegate(object sender,EventArgs e)
   {
      //do something
   }
   c.TestEvent+=delegate(object sender,EventArgs e)
   {
      //do something2
   }
}
大致用到的内容是反射、委托、事件,肯请指点下

解决方案 »

  1.   

    参考下面动态绑定事件的代码,测试成功。其中使用方法名称和程序集命名空间等字符串来进行反射。LZ可以自行将字符串放入配置文件。using System;
    using System.Windows.Forms;
    using System.Reflection;namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                string NameSpacePath = "WindowsFormsApplication2";          //要绑定的方法所在命名空间
                string ClassPath = "WindowsFormsApplication2.Form1";        //要绑定的方法所属的类
                string MethodName="button1_Click";                          //要绑定的方法名
                MethodInfo mi = Assembly.Load(NameSpacePath).CreateInstance(ClassPath).GetType().GetMethod(MethodName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
                EventHandler ev = (EventHandler)Delegate.CreateDelegate(typeof(EventHandler), this,mi);
                button1.Click += ev;
            }        private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("通过反射加载事件成功!");
            }    }
    }