示例#1
0
        static void Main(string[] args)
        {
            Factory <Dog> dogMaker = MakeDog;

            //不能隐式转换  虽然Dog派生自Animal,
            //但Factory<Dog>并没有从Factory<Animal>派生,
            //这两个委托对象是同级的
            // Factory<Animal> animalMaker = dogMaker;//错误
            //Factory<Animal> animalMaker = MakeDog;

            //协变
            NewFactory <Dog>    newDogMaker    = MakeDog;
            NewFactory <Animal> newAnimalMaker = newDogMaker;

            //逆变
            Action1 <Animal> act1 = ActOnAnimal;
            Action1 <Dog>    dog1 = act1;

            //Action1<Animal> animalAction = ActOnDog;//错误
            Action1 <Dog> dogAction = ActOnAnimal;
        }
        public void TestNewFactory()
        {
            IFactory <TestObject> factory = new NewFactory <TestObject>();

            Assert.IsFalse(ReferenceEquals(factory.Create(), factory.Create()));
        }
 public void TestNewFactory()
 {
     IFactory<TestObject> factory = new NewFactory<TestObject>();
     Assert.IsFalse(ReferenceEquals(factory.Create(), factory.Create()));
 }