namespace AssemblyTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Assembly asm = Assembly.LoadFrom(@"D:\AssemblyTest\Assembly1\bin\Debug\Assembly1.dll");
Type t = asm.GetType("Assembly1.FrmAssembly1");
object instance = asm.CreateInstance("Assembly1.FrmAssembly1");
//获取委托下的事件信息
EventInfo ei = t.GetEvent("et", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);
//获取内嵌委托类型
Type dt = t.GetNestedType("EvenTest");
Delegate d = Delegate.CreateDelegate(dt, this, "print");
//绑定事件
ei.AddEventHandler(instance, d);
(instance as Form).ShowDialog();
}
private void print(string msg)
{
this.Text = msg;
}
}
}
namespace Assembly1
{
public partial class FrmAssembly1 : Form
{
public delegate void EvenTest(string msg);
public event EvenTest et;
public FrmAssembly1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string msg = "返回值!";
et(msg);
}
}
}