Cloning Derived Types In a Single Method

Viewed 38

I have a non Abstract Base class Vehicle which has three derived types.

  • Car
  • Motorcycle
  • Tractor

I am looking at a service called VehicleBuilder Which would have a method CloneVehicle which takes a parameter of Vehicle type and returns a cloned object for all three derived types.

Here's my CloneVehicle

public Vehicle CloneVehicle (Vehicle v)
{
   var newVehicle = ClonebaseVehicle(v); // Clones all the types in the Base class
   if(Vehicle.Type == Vehicles.Tractor)
    {
        // Clone individual fields
        var tractor = new Tractor();
        tractor = newVehicle as Tractor;
        tractor.TractorCapacity  = 50 ; // tractor is coming null here
        return tractor; 
    }
}

I want to reuse ClonebaseVehicle and cannot create a constructor as the classes are coming from a diferrent DLL. Any other ways where I can clone the dervied objects using a base class reference ?

I cannot change the Vehicle class or any of its derived classes to create an abstract method in it

1 Answers
Related