2
我有一個非抽象基類Vehicle
,它有三種派生類型。在單一方法中克隆派生類型
Car
Motorcycle
Tractor
我在看一個服務叫做VehicleBuilder
這將有一個方法CloneVehicle
這需要車輛類型的參數,並返回一個克隆的對象爲所有三種派生類型。
這裏是我的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;
}
}
我想重用ClonebaseVehicle
和類是從diferrent DLL未來不能創建一個構造函數。 任何其他方式,我可以克隆使用基類引用的dervied對象?
我不能改變Vehicle
類或任何其派生類中創建一個抽象的方法,它
爲什麼這個賦值'tractor = newVehicle as Vehicle;''不是'tractor = newVehicle as Tractor;'? –
爲什麼這是如果(Vehicle.Type == Vehicles.Tractor)'不是這個'if(v.Type == Vehicles.Tractor)' –
也相關:https://stackoverflow.com/questions/8631898/c -sharp-inheritance-derived-class-from-base-class – HimBromBeere