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