2

如果我的父类属性 ConditionStatus 的数据类型为 ConditionEnum,例如

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

枚举代​​表像ConditionEnum {New, Used};

我想知道如何ConditionEnum在子类中更改它,以便ArticleA哪些实现IArticle可以像枚举一样ConditionEnum {Red, Blue, Yellow};ArticleB哪些实现IArticleenumConditionEnum {Point, Comma, Slash};我认为你有一个想法。

你会怎么做?

4

3 回答 3

4

您可以使您的界面通用:

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是一个枚举......并且您确实需要指定您的实现将使用哪个枚举。目前尚不完全清楚这是否会对您有所帮助,但这就是...

于 2013-08-10T18:52:46.177 回答
2

由于enums不能从其他enum类型或接口派生,这几乎是不可能的。你所描述的对我来说似乎是多态性。但是AMAIK,您不能将多态性应用于枚举。

于 2013-08-10T18:52:35.960 回答
0
  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;
于 2013-08-10T18:52:13.340 回答