クローン拡張機能を持つ汎用リストを複製しようとしています。リストアイテムに別のリストがある場合は深くクローンします
List<Vehicle> newList = currentVehicleList.Clone().ToList();
public static IList<T> Clone<T>(this IList<T> listToClone) where T : ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
は、私は車のオブジェクトは、拡張子が私のリストのクローンを作成するが、車両オブジェクトがプロパティがList<Order>
ので、クローンはFilledOrdersリストに対して実行されません入力したFilledOrdersを持ってICloneable
public class Vehicle : ICloneable
{
[Key]
public int VehicleId { get; set; }
public string Plaka { get; set; }
public double Volume { get; set; }
public double FilledVolume { get; set; }
public double DepartureTime { get; set; }
public double IdleVolume
{
get { return this.Volume - this.FilledVolume; }
set { }
}
public double FilledWeight { get; set; }
public double IdleWeight {
get { return this.WeightCapacity - this.FilledWeight; }
set{}
}
public decimal ConstantCost { get; set; }
public string VehicleType { get; set; }
public string Model { get; set; }
public bool IsRent { get; set; }
public double AvgVelocity { get; set; }
public decimal CostPerKilometer { get; set; }
public double WeightCapacity { get; set; }
public bool InProgress { get; set; }
public List<Order> FilledOrders { get; set; }
public object Clone()
{
return this.MemberwiseClone();
}
}
を実装しています。
public class Order : ICloneable
{
[Key]
public int OrderId { get; set; }
public Customer Customer { get; set; }
public bool IsTwoWayDirection { get; set; }
public DateTime DeliveryDate { get; set; }
public Dictionary<Product,int> OrderedProducts { get; set; }
public Dictionary<Product, int> ReOrderedProducts { get; set; }
public Double DemandTotalWeigth { get; set; }
public Double DemandTotalVolume { get; set; }
public Double PickupTotalWeigth { get; set; }
public Double PickupTotalVolume { get; set; }
public double EarliestArrivedTime { get; set; }
public double ArrivedTime { get; set; }
//TODO :Timespana cevrilecek
public Double AcceptStartDate { get; set; }
public Double AcceptEndDate { get; set; }
public Double ServiceTime { get; set; }
//
public object Clone()
{
return this.MemberwiseClone();
}
}
リスト項目に別のリストがある場合、クローンの解決策は何ですか? Vehicle
クラスで
あなたは自分でやってください。リストのコピーを作るために 'Clone()'にさらにコードを書いてください。それで、あなたが最初にその機能を実装している理由です。あなたはそのようなものの世話をすることができます。 – Nyerguds