好的,所以我有一个名为 Product 的抽象基类,一个继承 Product 的 KitItem 类和一个继承 KitItem 的 PackageKitItem 类。IE。
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();
但我得到一个无效的演员表。我正在寻找实现这一目标的最佳方法的想法。