2012-01-01 53 views
0

取而代之的是这样的:你可以直接指定一个C#属性的访问器吗?

Func<bool> func; 

bool Property { 
    get {return func();} 
} 

我希望能够做这样的事情:

Property.get =() => booleanReturningExpression; 

这是可能的,或者你可以让我更接近假语法?

+6

命名委托“委托”是一个坏主意;它很容易与System.Delegate混淆。 – 2012-01-01 03:23:42

+0

如果问题仅限于语法可用性,您可能需要查看.NET的面向方面编程选项。您可以使用由AOP引擎解释的属性修饰您的属性,从而为您重写您的代码。 – 2012-01-01 03:33:37

+0

@ Eric我只是因为我不喜欢看连续两个黑字而命名它。 o_O – Jessy 2012-01-01 03:59:51

回答

3

不,在纯C#中没有这样的东西是可能的。您可以使用字段或(readonly)性质:

public Func<bool> PropertyGet; 

,并分配给它,但是这不是一个很好的解决方案。如果您需要此功能对于任何语法糖越多,你可以从财产委托:

protected Func<bool> PropertyGet; 

public bool Property { 
    get { return this.PropertyGet(); } 
} 

而且你可以将它设置非常相似。或者,你可以模仿代表,如果你真的想要Property.get并设置一个自定义Property类的默认方法。 (我不知道这是否可能在C#中,但它是在VB.NET中。)

相关问题