2017-01-29 1 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은 정의 된 클래스 여야하므로 "일반 목록"이 아닌 UserControl 개체의 목록입니다.

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

을 당신이 당신의 클래스를 구현하는 경우는 회원이없는이

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

덕분에 많은 도움이되었습니다. – ganjeii