public void Test2() { // Instantiate the delegates with the methods. DCovariant <Control> dControl = SampleControl; DCovariant <Button> dButton = SampleButton; // You can assign dButton to dControl // because the DCovariant delegate is covariant. dControl = dButton; // Invoke the delegate. dControl(); }
public void TestVariance() { DInvariant <string> dinString = () => ""; //DInvariant<object> dinObject = dinString; DCovariant <string> dcoString = () => " "; DCovariant <object> dcoObject = dcoString; DContravariant <object> dcontraObject = (a) => Console.WriteLine(a); DContravariant <string> dcontraString = dcontraObject; DVariant <object, string> dObjectString = (a) => $"{a} "; DVariant <object, object> dObjectObject = dObjectString; DVariant <string, string> dStringString = dObjectString; DVariant <string, object> dStringObject = dObjectString; }