小编Fra*_*e B的帖子

使用泛型和约束覆盖虚方法

我试图覆盖该DbContext.Set<TEntity>()方法.

它的签名是:

public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class
Run Code Online (Sandbox Code Playgroud)

首先我尝试了这个:

public override DbSet<TEntity> Set<TEntity>()
{
    return base.Set<TEntity>();
}
Run Code Online (Sandbox Code Playgroud)

...但我收到错误:

类型'TEntity'必须是引用类型才能在泛型类型或方法'System.Data.Entity.DbContext.Set()'中将其用作参数'TEntity'

...所以我尝试指定它是一个引用类型:

public override DbSet<TEntity> Set<TEntity>() where TEntity: class
{
    return base.Set<TEntity>();
}
Run Code Online (Sandbox Code Playgroud)

......我现在得到:

覆盖和显式接口实现方法的约束是从base方法继承的,因此不能直接指定它们.

......如果我拿走它,我会回到第一个错误.

那么C#编译器要我做什么呢?

c# generics entity-framework

9
推荐指数
1
解决办法
1048
查看次数

标签 统计

c# ×1

entity-framework ×1

generics ×1