私は派生型が3つある非抽象基底クラスVehicle
を持っています。私はサービスで探しています派生型を単一のメソッドでクローン化する
Car
Motorcycle
Tractor
は、車両タイプのパラメータを受け取り、すべてのためにクローン化されたオブジェクトを返すメソッドCloneVehicle
を持っているでしょうVehicleBuilder
と呼ばれます3つの派生型。ここで
は私がClonebaseVehicle
を再利用したいとクラスはdiferrentのDLLから来ているとコンストラクタを作成することはできません私の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;
}
}
です。 基本クラス参照を使用して、壊れたオブジェクトをクローンできる他の方法はありますか?
私はあなたの基本クラスからのすべてのメンバーを提供する必要があり-methodあなたCloneBaseVehicle
の中でそれに
なぜこの割り当ては '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