首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LuaInterface:访问对象属性

LuaInterface:访问对象属性
EN

Stack Overflow用户
提问于 2012-04-08 21:31:44
回答 1查看 881关注 0票数 0

我正在使用LuaInterface为一些我希望在Lua中可用的对象注册一个getter。例如:

代码语言:javascript
复制
    public MyObject getObjAt(int index)
    {
        return _myObjects[index];
    }

我的Lua文件:

代码语言:javascript
复制
obj = getObjAt(3) 
print(obj.someProperty)    // Prints "someProperty"
print(obj.moooo)           // Prints "moooo"
print(obj:someMethod())    // Works fine, method is being executed

在Lua中返回公共对象属性后,我到底如何访问它们?这是可能的吗?或者我必须为每个对象属性编写getter?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-11 00:41:26

在理解如何访问属性时,您可能会发现此代码很有用:

代码语言:javascript
复制
class Lister
{
    public string ListObjectMembers(Object o)
    {
        var result = new StringBuilder();
        ProxyType proxy = o as ProxyType;

        Type type = proxy != null ? proxy.UnderlyingSystemType : o.GetType();

        result.AppendLine("Type: " + type);

        result.AppendLine("Properties:");
        foreach (PropertyInfo propertyInfo in type.GetProperties())
            result.AppendLine("   " + propertyInfo.Name);

        result.AppendLine("Methods:");
        foreach (MethodInfo methodInfo in type.GetMethods())
            result.AppendLine("   " + methodInfo.Name);


        return result.ToString();
    }
}

并注册函数:

代码语言:javascript
复制
static Lister _lister = new Lister();
private static void Main() {
    Interpreter = new Lua();

    Interpreter.RegisterFunction("dump", _lister,
    _lister.GetType().GetMethod("ListObjectMembers"));
}

然后在Lua中:

代码语言:javascript
复制
print(dump(getObjAt(3)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10063184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档