Я добавил «консоль» в свою игру, в которой я могу набирать команды и получать ответ (он основан на this ).Мне нужно иметь доступ к объектам, которые я создаю в своем Game.cs в своем классе консоли.Я не могу передать их конструктору, так как не знаю, сколько будет после того, как «двигатель» будет сделан.
Я пытался использовать метод для добавления объектов в Dictionnary<string, object>
, но не могу получить доступ к свойствам.
Что бы я хотел сделать:
Game1.cs
TileMap tileMap = new TileMap();
BakuConsole console;
...
console = new BakuConsole(this, Content.Load<SpriteFont>("ConsoleFont"));
console.AddRef("tileMap", tileMap);
BakuConsole.cs
public void AddRef(/* some args */) {
// halp!
}
public void Execute(string input) {
switch (input)
{
case "some --command":
console.WriteLine(g.ToString());
// execute stuff, with an object that was added via AddRef()
console.WriteLine("");
console.Prompt(prompt, Execute);
break;
default:
console.WriteLine("> " + input + " is not a valid command.");
console.WriteLine("");
console.Prompt(prompt, Execute);
break;
}
}
Надеюсь, я достаточно ясен.Спасибо!
Редактировать: Я просто не хочу, чтобы мой конструктор стал слишком большим, если я добавлю больше типов:
TileMap tileMap = new TileMap();
OtherType1 ot1 = new OtherType1();
OtherType2 ot2 = new OtherType2();
OtherType3 ot3 = new OtherType3();
OtherType4 ot4 = new OtherType4();
OtherType5 ot5 = new OtherType5();
IronPython делает именно то, что я хочу, и делает это через Globals.Add ("string", object "). Однако я не могу найти его в исходном коде (IronPython).