static void Main() { IMotorcycle motorBike = new Motorcycle(); //That is expected, as IMotorcycle can Accelerate. motorBike.Accelerate(); IBike newBike = new ElectricBike(); //That too is expected, as IBike can Pedal. newBike.Pedal(); //Now that´s something new, as IBike cannot Accelerate, //but the the ElectricBike adapter can, as it implements both interfaces. (newBike as IMotorcycle).Accelerate(); Console.Read(); }
protected void AccelerateBtn_Click(object sender, EventArgs e) { if (currentlySelectedVehicle is Car) { if (currentlySelectedCar.Fuel == 0) { errorLabel.Text = "Not Enough Fuel - Stoping Engine"; currentlySelectedCar.StopEngine(); } else if (currentlySelectedCar.Fuel > 1 && currentlySelectedCar.IsEngineRunning == true) { currentlySelectedCar.Accelerate(); } else { errorLabel.Text = "Can't Accelerate - Check Engine"; } } else if (currentlySelectedVehicle is Motorcycle) { if (currentlySelectMotorcycle.Fuel == 0) { errorLabel.Text = "Not Enough Fuel - Stoping Engine"; currentlySelectMotorcycle.RetractKickStand(); currentlySelectMotorcycle.StopEngine(); } else if (currentlySelectMotorcycle.Fuel > 2 && currentlySelectMotorcycle.IsEngineRunning == true) { currentlySelectMotorcycle.Accelerate(); } else { errorLabel.Text = "Can't Accelerate - Check Engine or KickStand"; } } updateText(); }