좋아, Product라는 상속 클래스의 KitItem 클래스와 KitItem을 상속받은 PackageKitItem 클래스라는 추상 기본 클래스가 있습니다. 즉.Shape Copy 상속받은 클래스들
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();
하지만 잘못된 캐스트가 표시됩니다. 나는 이것을 달성하기위한 최선의 방법에 대한 아이디어를 찾고 있습니다.
packKitItem이 KitItem 인 경우 MemberwiseClone을 사용하면 여전히 KitItem을 반환합니다. –
아니요, 복제품이 KitItem에 있습니다. packagekititem을 초기화하려고하는데 문제의 핵심은 작동하지 않습니다. – Echostorm
당신은 제품으로 새끼 고양이를 꾸려서는 안됩니다. 잔인합니다! –