UH2S2L26——泛型类替换

泛型类替换

泛型类,T是可以变化,而Lua没有泛型,因此,lua中的替换,要一个类型一个类型的来
你想替换几个类型,就写几个对应类型的补丁

固定语法为:

1
2
3
xlua.hotfix(CS.泛型类名(类型), {
-- 要替换的方法
})

假设我们要对下面泛型类做热补丁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Hotfix]
public class HotfixTest2<T>
{
public void Test(T str)
{
Debug.Log(str);
}
}

public class HotfixMain : MonoBehaviour
{
void Start()
{
LuaManager.Instance.Init();
LuaManager.Instance.DoLuaFile("Main");

HotfixTest2<string> t1 = new HotfixTest2<string>();
t1.Test("123");

HotfixTest2<int> t2 = new HotfixTest2<int>();
t2.Test(1000);
}
}

泛型传入字符串和整数,则lua脚本内容如下

1
2
3
4
5
6
7
8
9
10
11
xlua.hotfix(CS.HotfixTest2(CS.System.String), {
Test = function(self, str)
print("lua中打的补丁: " .. str)
end
})

xlua.hotfix(CS.HotfixTest2(CS.System.Int32), {
Test = function(self, num)
print("lua中打的补丁:".. num)
end
})

image