从界面定义通用列表

Define Generic List from interface

这可能是一个简单的答案,但我正在创建一个我认为是包含通用列表定义的简单界面。基本上只是说 "create a 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; }
    }

此外,我不确定是否可以包含该列表应该是静态的,我很难找到任何有符合这些要求的问题的人,可能是因为这不可能,或者我正在考虑方法不对?

接口是抽象方法的集合。这意味着您无法向它们添加 class 个变量。

要在功能上实现这一点,您需要的是一个摘要 Class。

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

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

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

这将确保实现 IAddToViewList 的每个 class 也具有 createViewList() 方法。现在,在这种情况下,UserControl 必须是已定义的 class,因此这是一个 UserControl 对象列表,而不是 "Generic List"。

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

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

那么当你实施你的 class 时它看起来像这样

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