public class A<T> { public delegate void Changed (A<T> a); protected event Changed _changed; public void Register (Changed changed) { _changed += changed; _changed (this); } } public class Test { public static void Main () { A<int> a = new A<int> (); a.Register (new A<int>.Changed (Del)); } public static void Del (A<int> a) { System.Console.WriteLine ("Solved"); } }