2013-04-09 56 views
1

我有一个通用的抽象类Plot<T>。我如何定义一个可以接受抽象类的实现的集合?我曾尝试以下方法没有成功:定义一个集合,接受任何通用类的实现

public List<Plot<object>> Plots = new List<Plot<object>>();

public List<Plot<dynamic>> Plots = new List<Plot<dynamic>>();

感谢。

+0

'class PlotList :List > {}' – leppie 2013-04-09 18:49:24

+0

您不能创建此集合,因为C#中的泛型是在编译时定义的。 – 2013-04-09 18:53:51

回答

8

情况是这样,通常要求创建一个非泛型基类,从通用类派生:

public abstract class Plot 
{ 
    // Put anything which doesn't need T here 
} 

public class Plot<T> : Plot 
{ 
} 

然后你就可以创建一个List<Plot>

+0

我已经在许多项目中使用过这种技术。我在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

相关问题