0
取而代之的是这样的:你可以直接指定一个C#属性的访问器吗?
Func<bool> func;
bool Property {
get {return func();}
}
我希望能够做这样的事情:
Property.get =() => booleanReturningExpression;
这是可能的,或者你可以让我更接近假语法?
取而代之的是这样的:你可以直接指定一个C#属性的访问器吗?
Func<bool> func;
bool Property {
get {return func();}
}
我希望能够做这样的事情:
Property.get =() => booleanReturningExpression;
这是可能的,或者你可以让我更接近假语法?
不,在纯C#中没有这样的东西是可能的。您可以使用字段或(readonly
)性质:
public Func<bool> PropertyGet;
,并分配给它,但是这不是一个很好的解决方案。如果您需要此功能对于任何语法糖越多,你可以从财产委托:
protected Func<bool> PropertyGet;
public bool Property {
get { return this.PropertyGet(); }
}
而且你可以将它设置非常相似。或者,你可以模仿代表,如果你真的想要Property.get
并设置一个自定义Property
类的默认方法。 (我不知道这是否可能在C#中,但它是在VB.NET中。)
命名委托“委托”是一个坏主意;它很容易与System.Delegate混淆。 – 2012-01-01 03:23:42
如果问题仅限于语法可用性,您可能需要查看.NET的面向方面编程选项。您可以使用由AOP引擎解释的属性修饰您的属性,从而为您重写您的代码。 – 2012-01-01 03:33:37
@ Eric我只是因为我不喜欢看连续两个黑字而命名它。 o_O – Jessy 2012-01-01 03:59:51