2

親クラスに ConditionEnum のようなデータ型 ConditionStatus のプロパティがある場合

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

列挙型は次のように表されますConditionEnum {New, Used};

ConditionEnum子クラスでこれを変更して、ArticleAどの実装IArticleが列挙型のようConditionEnum {Red, Blue, Yellow}; になり、ArticleBどの実装IArticleenum同様ConditionEnum {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、enum にポリモーフィズムを適用することはできません。

于 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 に答える