public void ContraVariance()
        {
            Contravariance cv = DoSomething;

            // DoSomething has a type that is **less derived** than that specified in the delegate.
            // Assigning less derived type to the delegate - therefore, is an example of ContraVariance.
        }
        public void ContravarianceTest()
        {
            IContravariance <BaseClass> b = new Contravariance();

            // IContravariance<BaseClass> => IContravariance<DerivedClass>로 implicit conversion.
            // 반대로는 불가능.
            IContravariance <DerivedClass> d = b;
        }
        public void Test()
        {
            //Covariance<Base> coB = new CoContraVarianceCollection();
            //Covariance<Derived> coD = coB;
            Covariance <Derived> coD = new CoContraVariance();
            Covariance <Base>    coB = coD;



            //Contravariance<Derived> contraD = new CoContraVarianceCollection();
            //Contravariance<Base> contraB = contraD;
            Contravariance <Base>    contraB = new CoContraVariance();
            Contravariance <Derived> contraD = contraB;
        }
Exemple #4
0
        static void varianceInDelegates()
        {
            //with variance, the method does not need to match with the delegate
            //Covariance      | return type    | Delegate return Parent                | Method return a Child
            //ContraVariance  | parameter type | Delegate recive as parameter a Child  | Method recive as parameter Parent

            Covariance conv = new Covariance(covarianceMethod);

            conv();

            Contravariance cont = new Contravariance(contraVarianceMethod);
            Child          c    = new Child();

            contraVarianceMethod(c);
        }
        public void TestMethod001()
        {
            // Arrange
            IComparer <Animal> compareAnimals = new AnimalSizeComparator();
            Contravariance     contravariance = new Contravariance();
            Cat catOne = new Cat("NallaPilli")
            {
                Size = 10
            };
            Cat catTwo = new Cat("ThellaPilli")
            {
                Size = 9
            };

            // Act
            Cat actual = contravariance.Winner(catOne, catTwo, compareAnimals);

            // Assert
            Assert.AreEqual(catOne, actual);
        }
Exemple #6
0
 private static void ContravarianceRunner()
 {
     NewSubject.WriteLine(nameof(Contravariance));
     Contravariance.Run();
 }