你能直接为c#属性分配访问器吗?

本文关键字:访问 分配 属性 | 更新日期: 2023-09-27 18:19:06

而不是像这样:

Func<bool> func;
bool Property {
    get {return func();}
}

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

Property.get = () => booleanReturningExpression;

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

你能直接为c#属性分配访问器吗?

不,这在纯c#中是不可能的。您可以使用字段或(readonly)属性:

public Func<bool> PropertyGet;

并赋值,但这不是一个很好的解决方案。如果您需要此特性的用途不仅仅是语法糖,您可以从属性中进行委托:

protected Func<bool> PropertyGet;
public bool Property {
    get { return this.PropertyGet(); }
}

你可以非常相似地设置它。或者,如果您真的想要Property.get,您可以模拟委托,并在自定义Property类上设置默认方法。(我不知道这是否可能在c#中,但它是在VB.NET)