zlua.types
zlua.types 在 zlualib.lua 加载时初始化,提供常用 System 类型全名字符串,可直接作为 zlua.signature、zlua.make_generic_type、zlua.box 等的 typeArg,等价于 zlua.typeof(CSharp.mscorlib....) 的简写。
:::info 命名变更
旧称 zlua.corlibtypes 已废弃,统一为 zlua.types。
:::
完整常量表
| Lua 键 | System 类型 | 典型用途 |
|---|---|---|
zlua.types.void | System.Void | 仅签名场景(无参构造等) |
zlua.types.bool | System.Boolean | signature、泛型实参 |
zlua.types.char | System.Char | signature |
zlua.types.byte | System.Byte | signature |
zlua.types.sbyte | System.SByte | signature |
zlua.types.short | System.Int16 | signature |
zlua.types.ushort | System.UInt16 | signature |
zlua.types.int | System.Int32 | signature(与 int32 相同) |
zlua.types.int32 | System.Int32 | signature、泛型实参 |
zlua.types.uint | System.UInt32 | signature |
zlua.types.long | System.Int64 | signature |
zlua.types.ulong | System.UInt64 | signature |
zlua.types.float | System.Single | signature |
zlua.types.double | System.Double | signature |
zlua.types.intptr | System.IntPtr | signature |
zlua.types.uintptr | System.UIntPtr | signature |
zlua.types.decimal | System.Decimal | 声明存在;互操作默认不支持 |
zlua.types.object | System.Object | 泛型实参、签名 |
zlua.types.string | System.String | signature |
用法示例
方法签名 / 全签名键
-- zlua.signature 只生成参数括号;全签名键 = 方法名 .. sig
local sig = zlua.signature(zlua.types.int32, zlua.types.string)
-- 同名多候选时 Bind 已挂好,直接:
-- demo['SomeMethod(System.Int32,System.String)'](demo, …)
泛型闭合
local list_int = zlua.make_generic_type(CSharp.mscorlib['System.Collections.Generic.List`1'], zlua.types.int32)
与 zlua.typeof / get_type_from_name 的选择
| 场景 | 推荐 |
|---|---|
corlib 基元 / string / object | zlua.types.* |
游戏程序集类型(Demo、Point2D) | CSharp.AC.Demo 类型表,或 zlua.typeof(...) |
闭合泛型 / 数组类型表 → System.Type | zlua.typeof(ListInt)(≡ C# typeof(List<int>)) |
| 单字符串解析(AQN / 泛型 / 数组) | zlua.get_type_from_name(...) |
泛型定义(未闭合 List\1`) | 类型表 + make_generic_type |
Mono / Il2Cpp 支持
| 运行时 | 支持 |
|---|---|
| Mono | ✅ |
| Il2Cpp | ✅ |