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