这一部分主要讲的是如何在lua代码中访问C#中的Dictionary对象与枚举类型,相比之之前的算是比较简单的了,基本上看一下就完全会使用了
案例9:
lua访问C#中的Dictionary
首先:作者也说过,对于这个例子中的方法BindMap()方法无需可以关注,这个只是为了保证例子可以独立运行,平时的开发中只需要将需要的类型添加在在CustomSetting的列表之中即可。
核心代码比较少:
function TestDict(map)
local iter = map:GetEnumerator()
while iter:MoveNext() do
local v = iter.Current.Value
print('id: '..v.id ..' name: '..v.name..' sex: '..v.sex)
end
end
这里lua函数中传入的map就是C#中的Dictionary对象,我们可以通过
Dictionary对象的
GetEnumerator方法获取到该对象的枚举计数器,然后通过调用该iter.Current.value则可以访问到枚举计数器所指向的值,可以使用iter:MoveNext()来是枚举计数器访问下一个元素,在lua中,
iter:MoveNext()在访问越界时会返回一个nil,所以可以通过以上的结构来遍历C#中的Dictionary。
除了以上的接口,笔者验证过C#中的Dictionary的大多数方法也可以在lua中以正常使用,需要记得的是类成员方法调用时是 : 而不是 .