Contravariance With Delegates C# with Example
using System; namespace CSharpGenerics { delegate void MyDelegate(T x); //Generic Delegate class BaseClass { public void Display() { Console.WriteLine("BaseClass Display Method."); } } class DerivedClass : BaseClass {} class Program { static void BaseClassAction(BaseClass baseReference) //Delegate Matching Method { Console.WriteLine("Main Program Method."); } static void Main(string[] args) { MyDelegate baseRefDel = new MyDelegate(BaseClassAction); MyDelegate derivedRefDel = baseRefDel; derivedRefDel(new DerivedClass()); } } }