0

LuaInterface を使用して、Lua で使用できるようにしたいオブジェクトのゲッターを登録しています。例えば:

    public MyObject getObjAt(int index)
    {
        return _myObjects[index];
    }

私のLuaファイル:

obj = getObjAt(3) 
print(obj.someProperty)    // Prints "someProperty"
print(obj.moooo)           // Prints "moooo"
print(obj:someMethod())    // Works fine, method is being executed

Luaでそれらを返した後、パブリックオブジェクトのプロパティにどのように正確にアクセスできますか? それは可能ですか、それともオブジェクト プロパティごとにゲッターを記述する必要がありますか?

4

1 に答える 1

0

プロパティにアクセスする方法を理解するには、次のコードが役立つ場合があります。

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();
    }
}

関数を登録します。

static Lister _lister = new Lister();
private static void Main() {
    Interpreter = new Lua();

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

次にLuaで:

print(dump(getObjAt(3)))
于 2012-04-10T16:41:25.707 に答える