gpt4 book ai didi

C#:半抽象自动属性?

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:19 25 4
gpt4 key购买 nike

在基类中,我想定义一个抽象的 get,但此时,我不关心 set。如何在子类中定义 setter?

我尝试了一些东西,但我无法让它工作。例如我试过:

public class BaseClass
{
public abstract bool MyBool { get; }
}

public class ChildClass : BaseClass
{
public override bool MyBool { get; protected set;}
}

和:

public class BaseClass
{
public bool MyBool { abstract get; }
}

public class ChildClass : BaseClass
{
public bool MyBool { override get; protected set;}
}

我知道我可以通过不在子类中使用自动属性并直接设置基础字段而不是创建 setter 来解决这个问题,但我正在寻找更好的方法。

编辑:我不想在 BaseClass 中添加抽象 setter。

最佳答案

使用接口(interface)而不是基类可能更有意义。然后,您只需让需要提供该属性的类实现该接口(interface)即可。

例如,你可以创建这个接口(interface):

public interface IBoolable {
bool MyBool { get; }
}

然后像这样实现接口(interface)仍然有效:

public class BoolableItem : IBoolable {
public bool MyBool { get; protected set; }
}

通过这种方式,您的代码可以安全地假设任何实现 IBoolable 的东西都有一个名为 MyBool 的属性,该属性至少是只读的。

关于C#:半抽象自动属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5775052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com