2011-05-05 20 views
1

我有一个类型:使用集合来存储仿制药,其类型实现共同的接口

ExcelSheet<T> 

我有实现接口的一些类型:

IAddress 
public class Instructor : IAddress 
public class Student : IAddress 

我想这样做的以下。

.... 
ExcelSheet<Instructor> instructorSheet = GetSheet<Instructor>(); 
ExcelSheet<Student> student = GetSheet<Student>(); 

List<ExcelSheet<IAddress>> sheetsWithAddress = new List<ExcelSheet<IAddress>> 
    { 
     instructorSheet, 
     student 
    } 

正如所写,这是不可能的。我正在使用c#4.0 有没有办法让这个工作?
这是一个坏主意吗?

回答

1

如果您将ExcelSheet中的T约束为IAddress,它将起作用。

class ExcelSheet<T> where T : IAddress 
+0

-1:这是不正确的。他的例子仍然不起作用,因为“ExcelSheet ”与“ExcelSheet ”不同。协方差是Matias指出的正确方法。 – 2011-05-05 14:40:24