【发布时间】:2014-09-13 08:56:17
【问题描述】:
我正在尝试覆盖DbContext.Set<TEntity>() method。
它的签名是:
public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class
首先我尝试了这个:
public override DbSet<TEntity> Set<TEntity>()
{
return base.Set<TEntity>();
}
...但我得到了错误:
类型“TEntity”必须是引用类型才能在泛型类型或方法“System.Data.Entity.DbContext.Set()”中用作参数“TEntity”
...所以我尝试将其指定为引用类型:
public override DbSet<TEntity> Set<TEntity>() where TEntity: class
{
return base.Set<TEntity>();
}
...我现在得到:
覆盖和显式接口实现方法的约束是从基方法继承的,所以不能直接指定。
...如果我把它拿走,我会回到第一个错误。
那么 C# 编译器要我做什么呢?
【问题讨论】:
标签: c# entity-framework generics