设置
public interface ITable { }
public class Company : ITable {
public int Id { get; set; }
public string Name { get; set; }
}
public class PaginationGridModel {
public PaginationGridModel(IList<ITable> rows) {
//cool stuff goes here
}
}
public GridModel GenerateModel<T>(IQueryable<T> Table) where T : ITable {
return new GridModel((IList<ITable>)Table);
}
//Actual Call
return GenerateModel<Company>(this.dataContext.Companies);
产生异常
Unable to cast object of type 'System.Collections.Generic.List`1[Company]' to type 'System.Collections.Generic.IList`1[ITable]'.
问题
由于Company
实现ITable
了我应该能够将 myList<Company>
转换为IList<ITable>
但是它不想工作,因为它实际上是T
. 但是T
在函数定义中被限制为ITable
. 我在这里做错了什么?当我不使用泛型时,设置工作得很好。但是我想要一个通用设置,因为我一直在一遍又一遍地编写相同的代码 - 这很糟糕:)
任何帮助将不胜感激。即使你告诉我是做不到的。