using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
MyTemp instance = new MyTemp();
MyTempEventTest(instance);
instance.Create();
}
private static void Instance_Created(object sender, TempEventArgs e)
{
Console.WriteLine("Event Fired: " + e.Name);
}
private static void MyTempEventTest(object objTarget)
{
Type arg2Type = typeof(TempEventArgs);
EventInfo ei = typeof(MyTemp).GetEvent("Created", BindingFlags.Public | BindingFlags.Instance);
ei.AddEventHandler(objTarget, (EventHandler)Instance_Created);
/*
Type[] methodArgs = { typeof(object), arg2Type };
DynamicMethod eventSourceCreated = new DynamicMethod(
"test", typeof(void), methodArgs, typeof(Program), true);
ILGenerator il = eventSourceCreated.GetILGenerator();
il.Emit(OpCodes.Ret);
Delegate del = eventSourceCreated.CreateDelegate(ei.EventHandlerType);
Console.WriteLine(del.Method.Name);
*/
}
}
public class TempEventArgs : EventArgs
{
public string Name;
}
public class MyTemp
{
public void Create()
{
Created(this, new TempEventArgs { Name = "MyTEmp" });
}
public event EventHandler Created;
}
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]