Generic substitution principle in C#

class Vehicle {
    public void Test() {
        //Implementation
    }
}

class Car : Vehicle { }

class TruckVehicle { }

var list = new List<Vehicle>();
var vehicle = new Vehicle();
var car = new Car();
var truck = new Truck();

list.Add(vehicle);
list.Add(car);
list.Add(truck);

foreach (var curVehicle in list) {
    curVehicle.Test();
}