【发布时间】:2015-01-12 11:51:07
【问题描述】:
在 .NET 中,我们可以编写如下代码来返回 propertyName
public static string GetName(Expression<Func<object>> exp)
{
MemberExpression body = exp.Body as MemberExpression;
if (body == null) {
UnaryExpression ubody = (UnaryExpression)exp.Body;
body = ubody.Operand as MemberExpression;
}
return body.Member.Name;
}
public class Test
{
public string prop1 { get; set; }
}
在属性内部,我们通常使用 OnPropertyChanged(() => this.prop1) 来返回属性名称。欲了解更多信息,请参阅这篇文章(How to raise PropertyChanged event without using string name)
我想在 groovy 中做一些类似的事情,但我不确定这样做的正确方法。
class TestObj
{
def prop1 = "value"
def prop2 = "value"
}
class Test{
def something(){
def t1 = new TestObj()
def propertyName1 = getName{ t1.prop1 }
def propertyName2 = getName{ t1.prop2 }
assert propertyName1 == "prop1"
assert propertyName2 == "prop2"
}
}
你将如何使用如上所示的表达式在 groovy 中实现 getName 方法
【问题讨论】:
-
这是拦截器吗?
标签: groovy