我正在使用LuaInterface为一些我希望在Lua中可用的对象注册一个getter。例如:
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中返回公共对象属性后,我到底如何访问它们?这是可能的吗?或者我必须为每个对象属性编写getter?
发布于 2012-04-11 00:41:26
在理解如何访问属性时,您可能会发现此代码很有用:
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)))https://stackoverflow.com/questions/10063184
复制相似问题