|
一、具有泛型为参数的方法
public class LuaCallCshap : MonoBehaviour
{
LuaEnv env = null;
void Start()
{
env = new LuaEnv();
env.DoString("require 'LuaCallCsharp'");
}
private void OnDestroy()
{
env.Dispose();
}
}
public class IsInvokedClass
{
//定义一个具有泛型为参数的方法
public void Method(List<string> strArray)
{
foreach (var item in strArray)
{
Debug.Log(item);
}
}
}
local IsInvoked = CS.IsInvokedClass
local classObj=IsInvoked()--自动调用父类和子类的构造函数
--lua中可以直接调用具有泛型为参数的方法
myTable={&#34;lua&#34;,&#34;C#&#34;,&#34;C++&#34;}
classObj:Method(myTable)二、Lua中调用C#中的泛型方法
[XLua.LuaCallCSharp]
public class IsInvokedClass
{
//定义一个泛型方法
public T Method<T>(T num1, T num2) where T:IComparable
{
if (num1.CompareTo(num2)<0)
{
return num2;
}
else
{
return num1;
}
}
}
/// <summary>
/// 扩展方法类
/// A.扩展方法类,必须是静态类
/// B.定义的扩展方法的参数,第一个参数必须是this,然后跟需要扩展的类名称全称
/// </summary>
[XLua.LuaCallCSharp]
public static class Env_IsInvokedClass
{
/// <summary>
/// 定义扩展方法
/// </summary>
/// <param name=&#34;isi&#34;></param>
/// <param name=&#34;num1&#34;></param>
/// <param name=&#34;num2&#34;></param>
/// <returns></returns>
public static int ExtGetMax(this IsInvokedClass isi,int num1,int num2)
{
if (num1<num2)
{
return num2;
}
else
{
return num1;
}
}
}
local IsInvoked = CS.IsInvokedClass
local classObj=IsInvoked()--自动调用父类和子类的构造函数
--lua中可以直接调用泛型方法
--在lua中通过调用“扩展方法”,来间接调用泛型方法
local maxNum=CS.IsInvokedClass():ExtGetMax(45,67)
print(&#34;在lua中扩展方法调用maxNum=&#34;..maxNum)
<hr/>提取码:c7o0
提取码:dhhc |
|