用MoonSharp在Lua中循环一个C#字典

时间:2018-01-07 15:38:26

标签: c# lua moonsharp

我想迭代这样的事情:

public readonly IDictionary<int, Entity> Entities = new Dictionary<int, Entity>();

在Lua,使用MoonSharp。从文档中可以看出,MoonSharp会自动转换为IDictionary类型的表格吗?

然而,尝试做这样的事情......

for k,v in pairs(World.Entities) do
  -- something
end

......正在给我:

ScriptRuntimeException: bad argument #1 to 'next' (table expected, got userdata)

为什么MoonSharp没有将我的字典转换成表格,我有什么遗漏?

谢谢!

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么MoonSharp不会自动处理这个问题 - 起初我认为这可能是我的实体的问题所在&#39;类型,但我已经将其切换出来并在其周围进行测试,但仍然没有。

我现在的解决方法是处理.lua文件中的转换。

function convert.dictTable(clr)
  local table = {}
  local enumerator = clr:GetEnumerator()

  while enumerator:MoveNext() do
    table[enumerator.Current.Key] = enumerator.Current.Value
  end

  return table
end