Использование this в базовом конструкторе?

Я работаю над проектом, который включает в себя множество интерфейсов и наследования, которые начинают становиться немного сложными, и теперь я столкнулся с проблемой.

У меня есть абстрактный класс State, который принимает объект Game в качестве аргумента конструктора. В конструкторе моего класса Game он принимает State. Идея состоит в том, что при наследовании от абстрактного базового класса Game при вызове конструктора базового класса вы передаете ему начальный объект State. Однако этот объект State принимает ту же Игру, в которой вы его создаете. Код выглядит следующим образом:

public class PushGame : ManiaGame
{
     public PushGame() :
          base(GamePlatform.Windows, new PlayState(this), 60)
     {
     }
}

Однако это не работает. Я могу только предполагать, потому что ключевое слово this нельзя использовать до тех пор, пока конструктор не начнет выполняться. По-видимому, попытка использовать его в конструкторе базового класса не сработает. Итак, что было бы моим лучшим обходным путем для этого? Мой план Б - просто удалить аргумент State из конструктора класса Game и после этого просто установить состояние внутри кода конструктора.

Есть ли более простой и менее навязчивый способ сделать это?

16
задан John Saunders 26 February 2012 в 06:55
поделиться