09/12/20 15:09:35
>>141,142
デリゲートもDLLで定義されている場合はもう少しめんどくさくなる。
-- test1a.cs
:
public delegate void FooHandler(object sender, EventArgs e);
public class Foo {
:
-- test1.cs
Type fooType = asm.GetType("Foo");
Type fooHandlerType = asm.GetType("FooHandler");
object foo = Activator.CreateInstance(fooType);
Delegate fooHandler = Delegate.CreateDelegate(fooHandlerType, typeof(Program), "MyHandler");
EventInfo einfo = fooType.GetEvent("Do");
MethodInfo minfo = fooType.GetMethod("Fire");
einfo.AddEventHandler(foo, fooHandler);
minfo.Invoke(foo, null);
MyHandlerがインスタンスメソッドの場合はthisが必要になる。
Delegate fooHandler = Delegate.CreateDelegate(fooHandlerType, typeof(Program), this, "MyHandler");