如何指定该类型应该是从Interface继承的类?我尝试了各种变体,但没有任何意义。
public class CarDal<TCarMark> where TCarMark:class//also tried ICarMark
{
...
private static readonly DataContext Context = new DataContext(ConnectionString);
private Table<ICarMark> _tblCarMarks = Context.GetTable<TCarMark>();//Error is "Cannot convert source type 'Table<TCarMark> to target type Table<ICarMark>'"
...
}
答案 0 :(得分:5)
您的约束,特别是结合您引用的两种形式,很好:
where TCarMark : class, ICarMark
问题是差异。
Table<TCarMark>
与Table<ICarMark>
没有协变/逆变关系
您必须在此课程中使用Table<TCarMark>
:
private Table<TCarMark> _tblCarMarks = Context.GetTable<TCarMark>();
// emphasis: ^^^
然而!不要使用静态数据上下文: