最近要用到反射,麻烦的是不知道如何使用反射对象的事件,找了一整天终于搞定了。去除枝枝蔓蔓,核心的代码如下:
(本例中使用的是系统的程序集和其中的Timer类,你可以用你自己定义的程序集和类替换)
class Class1
{
private object timer;
public void TestIt()
{
Assembly sys = Assembly.Load("System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
Type t = sys.GetType("System.Timers.Timer");
timer = Activator.CreateInstance(t);
EventInfo eInfo = t.GetEvent("Elapsed");
Type handlerType = eInfo.EventHandlerType;
t.InvokeMember("Interval", BindingFlags.SetProperty, null, timer, new Object[] { 1000 });
t.InvokeMember("Enabled", BindingFlags.SetProperty, null, timer, new Object[] { true });
}
public void ttt_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//看你想干嘛了
}
}