从界面

时间:2017-01-29 15:36:53

标签: interface generic-list

这可能是一个简单的答案,但我正在创建我认为是包含通用列表定义的简单接口。基本上只是说“创建一个通用列表”,如下所示:

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

这比我预期的要困难得多。也许我错了?我尝试的每个定义都会导致预期列表成为属性或方法。例如,我已经尝试了以下没有运气

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

另外我不确定是否可以包含列表应该是静态的,我找不到符合这些要求的问题的人,也许是因为它不可能或者我认为它是错误的方式是什么?

1 个答案:

答案 0 :(得分:1)

接口是抽象方法的集合。这意味着您无法向其添加类变量。

你需要在功能上完成这一点是一个抽象类。

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

但是,您需要做的就是定义一个返回列表的方法

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

这将确保实现IAddToViewList的每个类都具有createViewList()方法。现在,在这种情况下,UserControl必须是一个已定义的类,因此这是UserControl对象的列表,而不是&#34;通用列表&#34;。

要使列表通用,您必须在界面名称后添加菱形:

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

然后当你实现你的课时,它看起来像这样

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