private static void FooTakeDelegateArgInCar(MyDelegateArgIn <Car> foo) { foo(new Ford()); }
private static void FooTakeDelegateArgInFord(MyDelegateArgIn <Ford> foo) { foo(new Ford()); }
private static void RunDelegatsArgContvar() { MyDelegateArgIn <Car> delegateArgInBase = FooArgInBase; delegateArgInBase(new Car()); //MyDelegateArgIn<Car> delegateArgInBaseDerived = FooArgInDerived; //delegateArgInBaseDerived(new Ford()); MyDelegateArgIn <Ford> delegateArgInDerivedBase = FooArgInBase; delegateArgInDerivedBase(new Ford()); MyDelegateArgIn <Ford> delegateArgInDerivedBase1 = delegateArgInBase; delegateArgInDerivedBase1(new Ford()); MyDelegateArgIn <Ford> delegateArgInDerivedDerived = FooArgInDerived; delegateArgInDerivedDerived(new Ford()); //////////////////// MyDelegateArg <Car> delegateArgBase = FooArgInBase; delegateArgBase(new Car()); //MyDelegateArg<Car> delegateArgBaseDerived = FooArgInDerived; //delegateArgBaseDerived(new Ford()); MyDelegateArg <Ford> delegateArgDerivedBase = FooArgInBase; delegateArgDerivedBase(new Ford()); //MyDelegateArg<Ford> delegateArgDerivedBase1 = delegateArgBase; //delegateArgDerivedBase1(new Ford()); MyDelegateArg <Ford> delegateArgDerivedDerived = FooArgInDerived; delegateArgDerivedDerived(new Ford()); FooTakeDelegateArgFord(FooArgInDerived); FooTakeDelegateArgInFord(FooArgInDerived); FooTakeDelegateArgFord(FooArgInBase); FooTakeDelegateArgInFord(FooArgInBase); FooTakeDelegateArgCar(FooArgInBase); FooTakeDelegateArgInCar(FooArgInBase); //FooTakeDelegateArgInCar(delegateArgInDerivedBase1); DelegateCar dc = FooArgInBase; DelegateFord df = new DelegateFord(FooArgInDerived); //dc = FooArgInDerived; df = FooArgInBase; //dc = df; //df = dc; }