public void ContravarianceTest() { ContravarianceDelegate <BaseClass> b = input => input.Update(); // ContravarianceDelegate<BaseClass> => ContravarianceDelegate<DerivedClass>로 implicit conversion. // 반대로는 불가능. ContravarianceDelegate <DerivedClass> d = b; }
private static void ContravarianceInvoke() { ContravarianceDelegate del = TextWriterMethod; TextWriter tw = null; Console.WriteLine("Invoking Contravariance"); del((StreamWriter)tw); }