2016-05-21 9 views
1

私はクラスに3つのプロパティがあるとします。私はこのクラスをインターフェイスから派生させたいと思っています。インターフェイスが継承されるたびに、私はいくつかのプロパティを未使用のままにしておきたいので、IntelliSenseに表示させたくありません。インタフェースから派生したすべてのクラスは、異なる量のプロパティを実装できます。私はまた、基本クラスから直接継承し、3つのプロパティすべてを実装する通常のクラスを持っています。派生クラスは、実装する基本クラスのプロパティの量を選択できますか?

これは可能ですか?

ここに私がそれを想像する方法の私のイラストは、それがあなたに明らかになることを願っています。

enter image description here

答えて

0

あなたが探しているものということですか?

public class BaseClass : ISomeInterface, ISomeOther 
{ 
    public int Prop1 { get; set; } 
    public int Prop2 { get; set; } 
    public int Prop3 { get; set; } 
} 

public class Derived : BaseClass 
{ 
    // inherits all 3 props 
} 

public interface ISomeInterface 
{ 
    int Prop1 { get; } 
    int Prop2 { get; } 
} 

public interface ISomeOther 
{ 
    int Prop3 { get; } 
} 

public static class Program 
{ 
    public static void Main() 
    { 
     BaseClass instance1 = new BaseClass();  // IntelliSense shows all 3 props 
     Derived instance2 = new Derived();   // IntelliSense shows all 3 props 
     ISomeInterface instance3 = new BaseClass(); // IntelliSense shows 2 props from interface 
     ISomeOther instance4 = new BaseClass();  // IntelliSense shows only Prop3 
    } 
} 

特定のインターフェイスで機能を分解することによって、使用されているインターフェイスに応じて特定の機能のサブセットを提供できます。

+0

ありがとう、私は3つ以上のプロパティを持っているので、これは私のケースではあまり実用的ではありません。そして、私が小道具を持っているクラスを作成したい場合は、その目的のために新しいインターフェイスを作成する必要がありますさらに多くのプロパティを使用すると、たくさんのインターフェイスが完成します。 – PreqlSusSpermaOhranitel

+0

もちろん、各プロパティの単一のインターフェイスを公開しないでください。おそらくそれらは意味のある方法でグループ化することができます。 – khlr

+0

彼らは本当に私のプロパティがゲームのためであり、それらのプロパティが攻撃、防御、回避などの異なるキャラクタ状態を表すので、それらは本当にグループ化できません。ユニットはすべての異なる種類のステータスを持つことができます。 – PreqlSusSpermaOhranitel

1

クラスからインターフェイスを派生させることはできませんが、はインターフェイスからクラスを実装できます。

したがって、より小さいプロパティセットでインターフェイスを開始し、それをサブクラスで実装し、追加プロパティを追加します。

関連する問題