Внутри любого класса X
вы можете вызывать MemberwiseClone
(или любой другой защищенный метод) только для экземпляра X
. (Или класс, производный от X
)
Поскольку класс Enemy
, который вы пытаетесь клонировать, не наследует класс GameBase
, в котором вы пытаетесь его клонировать, вы получаете эту ошибку.
Чтобы это исправить, добавьте общедоступный метод Clone
к Enemy
, например:
class Enemy : ICloneable {
//...
public Enemy Clone() { return (Enemy)this.MemberwiseClone(); }
object ICloneable.Clone() { return Clone(); }
}