Не может получить доступ к защищенному участнику 'объект. MemberwiseClone ()'

Я пытаюсь использовать .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 класс?

21
задан bluish 9 April 2013 в 15:22
поделиться

1 ответ

В пределах любого класса X можно вызвать только MemberwiseClone (или любой другой защищенный метод) на экземпляре X. (Или класс, производный от X)

Поскольку класс Enemy, в котором Вы пытаетесь клонировать, не наследует класс GameBase, в котором Вы пытаетесь его клонировать, Вы получаете эту ошибку.

Чтобы исправить это, добавьте публичный метод Клонирование в Enemy, например:

class Enemy : ICloneable {
    //...
    public Enemy Clone() { return (Enemy)this.MemberwiseClone(); }
    object ICloneable.Clone() { return Clone(); }
}
37
ответ дан 29 November 2019 в 06:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: