My Blog

Associare un delegato mediante reflection

by lupok on giovedì 10 ottobre 2013 12:05

Associare un delegato tramite reflection In questo esempio viene mostrato come collegarsi ad un delegato utilizzando reflection.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
 
namespace ConnectToADelegateUsingReflection
{
   class Program
   {
      static void Main(string[] args)
      {
         MyEventGenerator myEventGenerator = new MyEventGenerator();
 
         EventInfo myEventInfo = typeof(MyEventGenerator).GetEvent("MyEvent");
 
         MethodInfo methodInfo = typeof(Program).GetMethod("OnMyEvent",
            BindingFlags.NonPublic | BindingFlags.Static);
 
         Delegate @delegate = Delegate.CreateDelegate(
            myEventInfo.EventHandlerType, methodInfo);
 
         myEventInfo.GetAddMethod()
            .Invoke(myEventGenerator, new Object[] { @delegate });
 
         Console.WriteLine("Press ENTER to exit");
         Console.ReadLine();
 
      }
 
      static void OnMyEvent(Object sender, EventArgs e)
      {
         Console.WriteLine("MyEvent received");
      }
   }
 
   class MyEventGenerator
   {
      public event EventHandler MyEvent;
 
      public MyEventGenerator()
      {
         new Thread(delegate()
            {
               while (true)
               {
                  try
                  {
                     if (MyEvent != null)
                        MyEvent(thisEventArgs.Empty);
                  }
                  finally
                  {
                     Thread.Sleep(1000);
                  }
               }
            }).Start();
      }
   }
 
}
ConnectToADelegateUsingReflection.zip

Blogs Parent Separator My Blog
Author
lupok

My Blog

Tags