|
XLua笔记
一、XLua的枚举转换:
之前的项目用过XLua的cast强转,枚举可以使用cast强制转换吗?今天试了一下, 发现转换不了。翻了一些博客,加上自己实践,整理了一下五种枚举使用和转换的方式:
C#新建一个测试枚举:- public enum TestEnum
- {
- Null = 0,
- }
复制代码 Lua代码测试调用C#枚举:- Test(CS.TestEnum.Null) --直接访问对应枚举
- Test(CS.TestEnum.__CastFrom(0)) --调用__CastFrom方法,参数传枚举对应的值
- Test(CS.TestEnum.__CastFrom("Null")) --调用__CastFrom方法,参数传枚举对应的字符串
- Test(0) --直接使用枚举的值
- Test("Null") --直接使用枚举的字符串
复制代码 二、获取枚举对应字符串:
C#中枚举可以直接ToString()获取到枚举对应的字符串,但是Lua里面却获取不到。- local _sid = 0
- local _test = CS.TestEnum.__CastFrom(_sid) --_test结果是枚举table(Null),打印出来是 -> Null
- local _result = tostring(_test) --打印出来是 -> Null: 0
复制代码 _test和_result都不是我们想要的结果。
我们可以通过System.Enum.GetName方法获取枚举对应的字符串:- local _result = CS.System.Enum.GetName(typeof(CS.TestEnum),sid) -- _result结果是一个字符串:Null
复制代码 三、获取枚举对应的值:
同理,调用枚举的GetHashCode方法就可以获取到对应的枚举值。- local _result = CS.TestEnum.Null:GetHashCode()
复制代码 |
|