Let's assume we have following classess:
abstract class Vehicle {/**/}
class Truck : Vehicle {/**/}
class Bus : Vehicle {/**/}
//etc...
abstract class VehicleWheel<TVehicle> where TVehicle : Vehicle {/**/}
class TruckWheel : VehicleWheel<Truck> {/**/}
class BusWheel : VehicleWheel<Bus> {/**/}
Now, i want to create generic class "VehicleWheelCarrier", which is inherited from Vehicle, and has 1 parameter, which is any type of wheel:
abstract class VehicleWheelCarrier<TWheel> : Vehicle where TWheel:VehicleWheel
Unfortunatelly, this doesn't compile, as VehicleWheel requires parameter.
How to solve that?
You may add a non-generic base for wheel like this:
abstract class Vehicle {/**/}
class Truck : Vehicle {/**/}
class Bus : Vehicle {/**/}
//etc...
abstract class VehicleWheelBase { internal VehicleWheelBase() { } /*Non-generic definitions of Wheel*/}
abstract class VehicleWheel<TVehicle> : VehicleWheelBase where TVehicle : Vehicle {/**/}
class TruckWheel : VehicleWheel<Truck> {/**/}
class BusWheel : VehicleWheel<Bus> {/**/}
abstract class VehicleWheelCarrier<TWheel> : Vehicle where TWheel : VehicleWheelBase
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With