Я работаю над проектом, который включает в себя множество интерфейсов и наследования, которые начинают становиться немного сложными, и теперь я столкнулся с проблемой.
У меня есть абстрактный класс State, который принимает объект Game в качестве аргумента конструктора. В конструкторе моего класса Game он принимает State. Идея состоит в том, что при наследовании от абстрактного базового класса Game при вызове конструктора базового класса вы передаете ему начальный объект State. Однако этот объект State принимает ту же Игру, в которой вы его создаете. Код выглядит следующим образом:
public class PushGame : ManiaGame
{
public PushGame() :
base(GamePlatform.Windows, new PlayState(this), 60)
{
}
}
Однако это не работает. Я могу только предполагать, потому что ключевое слово this нельзя использовать до тех пор, пока конструктор не начнет выполняться. По-видимому, попытка использовать его в конструкторе базового класса не сработает. Итак, что было бы моим лучшим обходным путем для этого? Мой план Б - просто удалить аргумент State из конструктора класса Game и после этого просто установить состояние внутри кода конструктора.
Есть ли более простой и менее навязчивый способ сделать это?