public static void InvariantGeneric() { IInvariantGeneric <MiddleClass> genericMiddle = new InvariantGeneric <MiddleClass>(); MiddleClass result = genericMiddle.Method(new MiddleClass()); // This will produce compile-time error: // Cannot implicitly convert type 'IInvariantGeneric<MiddleClass>' to 'IInvariantGeneric<BaseClass>'. // An explicit conversion exists (are you missing a cast?) //// IInvariantGeneric<BaseClass> genericBase = genericMiddle; // This will produce compile-time error: // Cannot implicitly convert type 'IInvariantGeneric<MiddleClass>' to 'IInvariantGeneric<LastClass>'. // An explicit conversion exists (are you missing a cast?) //// IInvariantGeneric<LastClass> genericLast = genericMiddle; }
public static void InvariantGeneric() { IInvariantGeneric<MiddleClass> genericMiddle = new InvariantGeneric<MiddleClass>(); genericMiddle.Method(new MiddleClass()); // This will produce compile-time error: // Cannot implicitly convert type 'IInvariantGeneric<MiddleClass>' to 'IInvariantGeneric<BaseClass>'. // An explicit conversion exists (are you missing a cast?) //// IInvariantGeneric<BaseClass> genericBase = genericMiddle; // This will produce compile-time error: // Cannot implicitly convert type 'IInvariantGeneric<MiddleClass>' to 'IInvariantGeneric<LastClass>'. // An explicit conversion exists (are you missing a cast?) //// IInvariantGeneric<LastClass> genericLast = genericMiddle; }