2012-01-01 52 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中。)

相關問題