【发布时间】:2014-01-08 18:00:21
【问题描述】:
我正在尝试在 C# 中遍历 LuaTable 对象,但出现错误。
我的 lua 文件是:
config = {}
config.visibility = 0
还有我的 C# 代码:
LuaTable config = lua.GetTable("config");
Console.WriteLine(config["visibility"].ToString());
foreach (DictionaryEntry member in config)
{
Console.WriteLine("({0}) {1} = {2}",
member.Value.GetType().ToString(),
member.Key,
member.Value);
}
产生这个输出:
0
Unhandled Exception: System.InvalidCastException: Cannot cast from source type to destination type.
如果我只询问键 visibility 处的值,我会得到正确答案,但我无法遍历键和值。
我应该使用哪个类而不是DictionaryEntry?
谢谢, 兹比尼克
【问题讨论】:
-
异常发生在循环期间,第一次通过,对吗? 3 个成员行中的哪一个引发了异常?
-
错误是由
foreach引起的 -
所以编译器无法从配置中获取字典枚举器。 config(即LuaTable)是否继承自IDictionary,并实现GetEnumerator?
-
它确实实现了
IDictionaryEnumerator: https://github.com/NLua/NLua/blob/master/Core/NLua/LuaTable.cs。
标签: c# lua iterator luainterface