首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泛型列表

泛型列表
EN

Stack Overflow用户
提问于 2012-07-31 05:27:37
回答 5查看 184关注 0票数 0

我在设计一个使用命令模式但使用泛型的解决方案时遇到了一些问题。基本上,我定义了一个泛型接口,它只有一个返回泛型对象列表的方法。

代码语言:javascript
复制
public interface IExecute<T>
{
   List<T> Execute();
}

public class SimpleExecute : IExecute<int>
{
   public List<int> Execute()
   { return a list of ints... }
}

public class Main
{
   private List<IExecute<T>> ExecuteTasks; // This is not valid in C#
}

由于泛型的泛型列表无效,因此我实现了一个非泛型接口IExceute,并使泛型接口扩展了非泛型接口,从而能够创建一个列表

代码语言:javascript
复制
public interface IExecute {}

public interface IExecute<T> : Execute
{
   List<T> Execute();
}

private List<IExecute> ExecuteTasks;

但是,现在我不确定如何才能遍历ExecuteTasks并调用execute方法。

我已经尽力解释这个问题了。如果你需要进一步解释我的问题,请让我知道。

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-31 05:42:41

你最多只能这样做:

代码语言:javascript
复制
public interface IExecute { IList Execute(); } 

然后,例如:

代码语言:javascript
复制
public class SimpleExecute : IExecute<int>   
{   
   public List<int> Execute()   
   { return a list of ints... }   
   IList IExecute.Execute() { return this.Execute(); }
}

(请注意非泛型IExecute.Execute()的显式接口成员实现)

然后:

代码语言:javascript
复制
List<IExecute> iExecuteList = //whatever;
foreach (var ix in iExecuteList)
{
    IList list = ix.Execute();
}

您不能在编译时获得特定的泛型列表类型(例如,IList<string>IList<int>),原因与您不能将intstring存储在同一泛型列表中的原因相同(除非类型参数为object)。

票数 2
EN

Stack Overflow用户

发布于 2012-07-31 05:36:39

代码语言:javascript
复制
public class Main
{
   private List<IExecute<T> ExecuteTasks; // This is not valid in C#
}

这里有两个错误:

  • T是一个未知的类。您应该已经指定了正确的类型
  • List<没有右尖括号'>‘。每个开始的括号必须有一个结束的括号。它应该看起来像List<IExecute<T>>
票数 1
EN

Stack Overflow用户

发布于 2012-07-31 05:47:41

代码语言:javascript
复制
List<IExecute<T>> ExecuteTasks 

无效,因为T未在包含类中的任何位置定义。

不过,这样的代码应该是有效的:

代码语言:javascript
复制
List<IExecute<Object>> ExecuteTasks;

ExecuteTasks.Add(new SimpleExecute());

代码语言:javascript
复制
public class Main<T>
{
    List<IExecute<T>> ExecuteTasks 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11729891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档