public delegate void TheDelegate(string message);
public static class Program
public static event TheDelegate TheEvent;
public static TheDelegate DelInstance;
public static void Main()
DelInstance = new TheDelegate(TheMethod);
DelInstance += TheMethod;
DelInstance.Invoke("Invoke the delegate.");
PrintMemberInfo(DelInstance.GetType());
TheEvent.Invoke("Invoke the event.");
PrintMemberInfo(TheEvent.GetType());
public static void TheMethod(string message)
Console.WriteLine(message);
public static void PrintMemberInfo(System.Type t)
foreach (MemberInfo m in t.GetMembers())
Console.Write(m.Name + ", ");
public class AnotherClass
Program.DelInstance += new TheDelegate(AnotherMethod);
Program.DelInstance.Invoke("Another class");
public void AnotherMethod(string message)
Console.WriteLine(message);