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())); }