C#NLua:访问通用参数

时间:2015-07-19 11:32:11

标签: c# generics arguments monogame nlua

我有一个使用通用参数的实体组件系统。我正在尝试使用NLua使Lua脚本工作。

但是我不知道如何从Lua环境访问泛型参数。

这样的东西?:

if e:HasComponent<Position>() then
    print("Found position...")
end

如果无法做到这一点,那么我将如何通过字符串访问组件?

我会根据要求提供代码段,因为我认为这不是我的代码的问题。

1 个答案:

答案 0 :(得分:2)

您可以尝试直接调用Generic方法,不使用type参数,NLua将尝试匹配方法名称。

if e:HasComponent () then
    ...
end

如果失败,您还可以尝试将通用方法包装到非泛型扩展方法中。

public static HasPositionComponent (this TypeE e)
{
     return e.HasComponent<Position>();
}

然后你可以从Lua

调用HasPositionComponent作为常规方法
if e:HasPositionComponent () then
    ...
end

看一下GenericMethod测试:

https://github.com/NLua/NLua/blob/master/tests/LuaTests.cs#L548