父类中的枚举属性应在派生类中更改

本文关键字:派生 枚举 属性 父类 | 更新日期: 2023-09-27 18:27:15

如果我的父类属性条件数据类型的条件状态 条件 像

interface IArticle
{
    ConditionEnum ConditionStatus {get; set;}
}

枚举表示得像ConditionEnum {New, Used};

我想知道如何在子类中更改此ConditionEnum,以便实现IArticleArticleA可以具有类似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,你不能将多态性应用于枚举。

  1. 这不是父类,而是一个接口。
  2. 您可以在类中有一个enum,您可以将其称为ClassA.ConditionEnum.*

.

class MyClass : IArticle {
    public enum ConditionEnum { Red, Blue, Yellow };
    public ConditionEnum myenum;
}
MyClass c = new MyClass();
c.myenum = MyClass.ConditionEnum.Red;