C# 如何在不知道的情况下将对象添加到集合中';s型?

C# 如何在不知道的情况下将对象添加到集合中';s型?,c#,xna,C#,Xna,我在游戏中添加了一个“控制台”,我可以在其中键入命令并接收响应(它基于)。我需要能够访问我在控制台类的Game.cs中实例化的对象。我无法将它们传递给构造函数,因为我不知道一旦“引擎”完成,会有多少 我尝试使用方法将对象添加到词典,但无法访问属性 我希望能够做到: Game1.cs TileMap TileMap=new TileMap(); BakuConsole控制台; ... console=新的BakuConsole(这是Content.Load(“ConsoleFont”); cons

我在游戏中添加了一个“控制台”,我可以在其中键入命令并接收响应(它基于)。我需要能够访问我在控制台类的Game.cs中实例化的对象。我无法将它们传递给构造函数,因为我不知道一旦“引擎”完成,会有多少

我尝试使用方法将对象添加到
词典
,但无法访问属性

我希望能够做到:

Game1.cs

TileMap TileMap=new TileMap();
BakuConsole控制台;
...
console=新的BakuConsole(这是Content.Load(“ConsoleFont”);
console.AddRef(“tileMap”,tileMap);
BakuConsole.cs

public void AddRef(/*一些参数*/){
//停!
}
公共void执行(字符串输入){
开关(输入)
{
案例“some--command”:
console.WriteLine(g.ToString());
//使用通过AddRef()添加的对象执行stuff
控制台。写线(“”);
console.Prompt(提示,执行);
打破
违约:
console.WriteLine(“>”+input+”不是有效的命令。“);
控制台。写线(“”);
console.Prompt(提示,执行);
打破
}
}
我希望我足够清楚。谢谢

编辑: 我只是不希望我的构造函数在添加更多类型时变得太大:

TileMap tileMap = new TileMap();
OtherType1 ot1 = new OtherType1();
OtherType2 ot2 = new OtherType2();
OtherType3 ot3 = new OtherType3();
OtherType4 ot4 = new OtherType4();
OtherType5 ot5 = new OtherType5();

做我想做的事情,并通过Globals.Add(“string”,object”)来做。但是,我似乎在(IronPython的)源代码中找不到它.

我可以看到您正在将游戏的引用传递给Console类。为什么不使用该引用从游戏类访问所需的内容?

您需要在字典中指定要在字典中添加的对象的类别名称。 假设,我必须添加“
Game1
”对象,然后我们应该按照以下方式初始化字典

Dictionary<string, Game1> dicDemo = new Dictionary<string, Game1>();
Game1 objgame1 = new Game1();
dicDemo.Add(string.Empty,objgame1);
Dictionary dicDemo=newdictionary();
Game1 objgame1=新Game1();
添加(string.Empty,objgame1);

根据您所描述的,您实际上不需要字典,您需要一些对象的属性,可能直接在
BakuConsole

class BakuConsole
{
    … // your current code here

    public TileMap TileMap { get; set; }
    public OtherType1 OtherType1 { get; set; }
    …
}
然后,您可以这样设置:

console.TileMap = tileMap;
console.OtherType1 = otherType1;
…

当您使用它时,您在访问属性时不会遇到任何问题。

尝试从
game
访问
tileMap
会给我
“Microsoft.Xna.Framework.game”不包含“tileMap”的定义。
为您想要检索的每个对象创建一个属性如何?您可以发布您的签名吗唯一构造函数?
公共BakuConsole(游戏,SpriteFont字体):基本((游戏)游戏)
即使这样,它也不会编译,编译器会抛出
'Microsoft.Xna.Framework.Game'不包含“tileMap”的定义
你不知道会有多少是什么意思?你能举个例子吗?如果你希望有很多这样的对象,那么制作一个包含ose对象。我真的在考虑这个问题。我可以创建一个
GameObject
类型,并从中扩展所有内容……对吗?这很有效。我想添加属性比添加到构造函数要简单。谢谢!