さて、Product という抽象基本クラス、Product を継承する KitItem クラス、および KitItem を継承する PackageKitItem クラスがあります。すなわち。
Product
KitItem : Product
PackageKitItem : KitItem
KitItems をロードしましたが、PackageKitItems のコレクションをロードする必要があります。これは、事実上、KitItems の浅いコピーです。
現在、次のように、 Product コンストラクターでハッキーな浅いコピーのように感じることを行っています。
public Product(Product product)
{
FieldInfo[] fields = product.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
// copy each value over to 'this'
foreach (FieldInfo fi in fields)
fi.SetValue(this, fi.GetValue(product));
}
私は次のように KitItem にコピーを設定しようとしました:
public KitItem ShallowCopy()
{
return (KitItem)this.MemberwiseClone();
}
そしてそれを次のように呼び出します:
PackageKitItem tempPackKitItem = (PackageKitItem)packKitItem.ShallowCopy();
しかし、私は無効なキャストを取得します。これを達成するための最良の方法のアイデアを探しています。