目前,我正在做一些解析我为小游戏制作的模板的工作。通过词典词典进行迭代
它看起来像这样:
HEADER:NPC
NAME:Goblin
NAMEPLURAL:Goblins
NAMECHILD:Gob'in
NAMECHILDPLURAL:Gob'ins
MOVEMENT0:WALK
MOVEMENT1:RUN
MOVEMENT2:SWIM
BASEHP:30
BASEMANA:0
BASELEVEL:1?9
在我的解析器我执行以下操作:
class TemplateParser
{
public String folder { get; set; }
public TemplateParser(String folder)
{
this.folder = folder;
}
public Dictionary<String, Dictionary<String, String>> Parse()
{
Dictionary<String, Dictionary<String, String>> parsedTemplates =
new Dictionary<String, Dictionary<String, String>>();
String[] files = Directory.GetFiles(folder);
StreamReader reader;
foreach (String s in files)
{
try
{
String line = "";
reader = new StreamReader(s);
Dictionary<String, String> attributes = new Dictionary<String, String>();
while((line = reader.ReadLine()) != null)
{
string[] split = line.Split(':');
attributes.Add(split[0], split[1]);
}
parsedTemplates.Add(Path.GetFileNameWithoutExtension(s), attributes);
reader.Close();
}
catch (IOException ioe)
{
Log.LogMessage(ioe.Message, ELogFlag.CRITICAL);
}
}
return parsedTemplates;
}
}
现在这里是问题:
当我试图通过这个集合来看看(运行后Parse()
)我想做一个小测试,并写出包含“哥布林”字典中的所有信息的字典。
到目前为止,我所有的尝试都是徒劳的,因为当我做templates["Goblin"]
我希望我能得到一本字典,我可以迭代foreach()
但它不会让我这样做。它说了一些关于转换不可能的事情。然后我寻找一个枚举器,但我无法让枚举器迭代。
我错过了什么?
你有什么确切的错误? –
@SergeyBerezovskiy它不是一个错误,因为它忽略了在字典中迭代字典的逻辑。 – OmniOwl
@Vipar你得到的错误*特别提到了对象的实际类型。如果你看过它,它会解释你需要改变类型。 – Servy