Я пытаюсь использовать .MemberwiseClone()
на пользовательском моем классе, но это подбрасывает эту ошибку:
Cannot access protected member 'object.MemberwiseClone()' via a qualifier of type 'BLBGameBase_V2.Enemy'; the qualifier must be of type 'BLBGameBase_V2.GameBase' (or derived from it)
Что это означает? Или еще лучше, как я могу клонироваться Enemy
класс?
В пределах любого класса X
можно вызвать только MemberwiseClone
(или любой другой защищенный метод) на экземпляре X
. (Или класс, производный от X
)
Поскольку класс Enemy
, в котором Вы пытаетесь клонировать, не наследует класс GameBase
, в котором Вы пытаетесь его клонировать, Вы получаете эту ошибку.
Чтобы исправить это, добавьте публичный метод Клонирование
в Enemy
, например:
class Enemy : ICloneable {
//...
public Enemy Clone() { return (Enemy)this.MemberwiseClone(); }
object ICloneable.Clone() { return Clone(); }
}