gpt4 book ai didi

c# - 如何强制派生类覆盖基类的枚举?

转载 作者:行者123 更新时间:2023-12-05 00:31:39 24 4
gpt4 key购买 nike

让有类 NaturalFood 和两个类继承自该类;水果类和蔬菜类

 abstract class NaturalFood
{
enum AllList
{
//empty list as a placeholder
}

protected string Name;
}

class Fruits : NaturalFood
{
enum AllList
{
Apple = 1,
Banana = 2
}
}

class Vegetables : NaturalFood
{
enum AllList
{
Carrot = 1,
Potatoes = 2
}

}

我想强制从 NaturalFood 类派生的任何类都必须声明和/或覆盖 AllList 枚举。实际上,枚举将包含特定于派生类的列表。我该怎么做呢 ?

编辑 :我的基本要求是,从基类派生的每个类都必须有自己的特定于它的“东西”列表。枚举只是创建列表的一种方式。我希望你能从我的例子中得到要点。我想利用 Enumeration 提供的功能。智能感知,toString() 等。

编辑 2:我的例子还不够实用吗?如果我将整个枚举放在基类 (NaturalFood) 中,我怎么知道哪些枚举值特定于哪个派生类?假设每个派生类都在“发布一些东西”,它必须以枚举常量的形式提供,我想对每个派生类强制执行此约束。 所以换句话说,我的问题是如何像这里描述的场景那样对派生类强制执行约束?

最佳答案

这是不可能的,因为枚举是类型,而不是类成员......而且它们在类中声明的事实并不使它们成为该类的成员,它们只是嵌套的。每个类都可以并且必须定义它自己的 private enum AllList键入...所以您的实际代码是唯一可行的方法。
如果你想获得这样的东西并且你只有几个值要处理,坚持使用属性覆盖:

class A
{
public virtual String Value
{
get
{
return "A";
}
}
}

class B : A
{
public override String Value
{
get
{
return "B";
}
}
}

关于c# - 如何强制派生类覆盖基类的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14397606/

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