Я пытаюсь получить доступ к полю из производного класса в массиве, который содержит ссылки на базовый класс.Доступ к полю из производного класса
У меня есть три класса:
abstract GameObjectBase
{
}
и производные от являются:
public Gamespace: GameObjectBase
{
private bool containsItem;
}
И:
public GameWall: GameObjectBase
{
}
(Очевидно, что эти классы содержат больше данных, методы и конструкторы).
Я создал массив из этих объектов, как этот
private GameObjectBase[,] _labyrinthArray = new GameObjectBase[10,10];
я затем заполнить указанный массив с Gamespaces и Gamewalls. Но когда я обращаюсь к объекту Gamespace в массиве, поле containsItem
недоступно из-за ссылки на объект типа типа GameObjectBase.
Очевидно, я мог бы положить containsItem
в GameObjectBase и сделать его доступным оттуда, но это не подходит для моего подхода к ООП. Единственное другое решение, которое я нашел, - это прямое задание объекта, заданного Gamespace
.
Это кажется довольно грубым и подверженным ошибкам. Есть ли лучшее решение для этого?
Как вы получаете доступ к объекту (коду) игрового пространства? – DanielVorph
Что случилось с нажатием на базу в этой ситуации? Совершенно прекрасно, что реализация Gamewall всегда возвращает false, если она вызвана – jglouie