2017-01-29 19 views
0

から定義するこれは簡単な答えかもしれませんが、私はジェネリックリストの定義を含む簡単なインターフェースだと思っています。基本的には以下のような「一般的なリストを作成する」と書いてあるだけです。汎用リストをインターフェース

public static List<UserControl> ViewList = new List<UserControl>(); 

これは私が予想していたよりも難しいことを証明しています。多分私はそれについて間違っているだろうか?私が試した各定義は、期待されるリストがプロパティまたはメソッドである結果となります。例えば、私はそれが、私が困っこれらの要件に合致する質問で誰を見つけることを抱えているリストは静的であることを含めることは可能ですかはわからない

//FirstTry 
    public interface IAddToViewList 
    { 
     List<UserControl> ViewList(); 
    } 
//Second 
    public interface IAddToViewList 
    { 
     List<UserControl> ViewList { get; set; } 
    } 

また運と以下試してみましたおそらくそれが不可能なのか、それとも間違った方法を考えているのだろうか?

+0

インタフェースのようになります。

では、インターフェイス名の後にダイヤモンドを追加する必要があり、一般的なリストを作成するには。彼らには方法しかありません。インタフェースは、このインタフェースを実装するものが持つべきメソッドを定義するだけです。インターフェイスの代わりに抽象クラスが必要なように思えます。 – mroman

答えて

1

インターフェイスは、抽象メソッドのコレクションです。つまり、クラス変数を追加できません。

これを機能的に達成するために必要なものは、抽象クラスです。

public abstract class AddToViewList 
{ 
    List<UserControl> ViewList; 
} 

しかし、あなたがする必要があるのはこれがIAddToViewListを実装するすべてのクラスでもcreateViewList()メソッドを持っていることを確認しますリスト

public interface IAddToViewList 
{ 
    public List<UserControl> createViewList(); 
} 

を返すメソッドを定義しています。さて、この場合、UserControlは定義されたクラスでなければならないので、これは "Generic List"ではなく、UserControlオブジェクトのリストです。

public interface IAddToViewList<UserControl> 
{ 
    public List<UserControl> createViewList(); 
} 

を、あなたはあなたのクラスを実装しているとき、それはメンバーを持っていないこの

public class Foo implements IAddToViewList<String> 
{ 
    public List<String> createViewList(){ 
     // TODO 
     return null; 
    } 
} 
+0

おかげでこれは役に立ちました – ganjeii

関連する問題