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; }
private static void WithInvariantGeneric() { IInvariantGeneric <MIddleClass> invariantGeneric = new InvariantGeneric <MIddleClass>(); invariantGeneric.Method(new MIddleClass()); }