Итак, у меня есть абстрактный базовый класс Product, класс KitItem, который наследует Product, и класс PackageKitItem, который наследует KitItem. т.е.
Product
KitItem : Product
PackageKitItem : KitItem
У меня загружены KitItems, и мне нужно загрузить коллекцию PackageKitItems, которые фактически являются мелкими копиями KitItems.
В настоящее время мы делаем то, что мне кажется хакерской мелкой копией в конструкторе продукта, например так:
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();
но я получаю недопустимый бросок. Я ищу идеи для лучшего способа сделать это.