父类中的枚举属性应在派生类中更改
本文关键字:派生 枚举 属性 父类 | 更新日期: 2023-09-27 18:27:15
如果我的父类属性条件数据类型的条件状态 条件 像
interface IArticle
{
ConditionEnum ConditionStatus {get; set;}
}
枚举表示得像ConditionEnum {New, Used};
我想知道如何在子类中更改此ConditionEnum
,以便实现IArticle
的ArticleA
可以具有类似ConditionEnum {Red, Blue, Yellow};
的枚举ArticleB
也实现了IArticle
ConditionEnum {Point, Comma, Slash};
enum
,我想你有一个想法。
你会怎么做?
你可以让你的接口通用:
public interface IArticle<T> where T : struct
{
T ConditionStatus { get; set; }
}
public class ArticleA : IArticle<ColorEnum>
{
public ColorEnum ConditionStatus { get; set; }
}
public class ArticleB : IArticle<PunctuationEnum>
{
public PunctuationEnum ConditionStatus { get; set; }
}
请注意,您不能强制T
是枚举...并且您确实需要指定您的实现将使用哪个枚举。目前还不完全清楚这是否会对你有所帮助,但这就是所有的东西......
由于enums
无法从其他enum
类型或接口派生,因此几乎是不可能的。你描述的在我看来似乎是多态的。但是 AMAIK,你不能将多态性应用于枚举。
- 这不是父类,而是一个接口。
- 您可以在类中有一个
enum
,您可以将其称为ClassA.ConditionEnum.*
:
.
class MyClass : IArticle {
public enum ConditionEnum { Red, Blue, Yellow };
public ConditionEnum myenum;
}
MyClass c = new MyClass();
c.myenum = MyClass.ConditionEnum.Red;