2017-09-15 23 views
1

我知道,一个可以用以下简单的语法VALA:获取属性的便捷方式

obj["foo"] = bar; 

设定的名字基于GLib.Object级的属性有没有办法在获取属性的值类似的方式?下面的结构似乎不工作:

Bar bar = obj["foo"]; 

瓦拉返回错误:无效的方法被调用不允许作为表达

我知道它可以在下面的例子来完成,但我米寻找一些conciser。

Bar bar; 
obj.get("foo", out bar); 

回答

4
Bar bar = obj.foo; 

您应该使用类似的代码来设置属性,也什么,而不是你在上面写道:

obj.foo = bar; 

它通常不是一个大问题,但这种形式往往是有点比通过GObject属性更高效。它更短。恕我直言,它也看起来更好。

+0

但是如果B是A的一个子类并且我想要得到B的属性来引用A? – krokoziabla

+0

'(obj as B).foo'。或者((B)obj).foo',如果你愿意的话。 – nemequ

+0

嗯。好,谢谢... – krokoziabla