class Mammals { } class Dogs : Mammals { } class Program { public delegate void MyHandlerMethod(Dogs sample_dog); public static void MyFirstHandler(Mammals elephant) { } public static void MySecondHandler(Dogs sheepdog) { } static void Main(string[] args) { // Contravariance permits this delegate. MyHandlerMethod handler_1 = new MyHandlerMethod(MyFirstHandler); MyHandlerMethod handler_2 = new MyHandlerMethod(MySecondHandler); } }