Хорошо, у меня есть абстрактный базовый класс Product, класс KitItem, который наследует Product, и класс PackageKitItem, который наследует KitItem. то есть.
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();
но я получил неверный актерский состав. Я ищу идеи для лучшего способа сделать это.