你能直接为C#属性分配一个访问者吗?

时间:2012-01-01 03:21:42

标签: c# delegates properties

而不是像这样:

Func<bool> func;

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

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

Property.get = () => booleanReturningExpression;

这可能,或者你能让我更接近那种假的语法吗?

1 个答案:

答案 0 :(得分:3)

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

public Func<bool> PropertyGet;

并分配给它,但这不是一个非常好的解决方案。如果您需要此功能而不仅仅是语法糖,您可以从属性委派:

protected Func<bool> PropertyGet;

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

你可以将它设置得非常相似。或者,如果确实想要Property.get并在自定义Property类上设置默认方法,则可以模仿委托。 (我不知道这在C#中是否可行,但它在VB.NET中。)