我有一个通用的抽象类Plot<T>
。我如何定义一个可以接受抽象类的实现的集合?我曾尝试以下方法没有成功:定义一个集合,接受任何通用类的实现
public List<Plot<object>> Plots = new List<Plot<object>>();
public List<Plot<dynamic>> Plots = new List<Plot<dynamic>>();
感谢。
我有一个通用的抽象类Plot<T>
。我如何定义一个可以接受抽象类的实现的集合?我曾尝试以下方法没有成功:定义一个集合,接受任何通用类的实现
public List<Plot<object>> Plots = new List<Plot<object>>();
public List<Plot<dynamic>> Plots = new List<Plot<dynamic>>();
感谢。
情况是这样,通常要求创建一个非泛型基类,从通用类派生:
public abstract class Plot
{
// Put anything which doesn't need T here
}
public class Plot<T> : Plot
{
}
然后你就可以创建一个List<Plot>
。
我已经在许多项目中使用过这种技术。我在Tim McCarthy的“Domain Driven Design”一书中首次发现了这个问题。 http://www.amazon.com/NET-Domain-Driven-Design-Problem-Solution/dp/0470147563/ref=sr_1_5?ie=UTF8&qid=1365533533&sr=8-5&keywords=domain+driven+design – krillgar 2013-04-09 18:53:20
'class PlotList:List > {}' –
leppie
2013-04-09 18:49:24
您不能创建此集合,因为C#中的泛型是在编译时定义的。 – 2013-04-09 18:53:51