实现IDbSet时发生编译错误
本文关键字:编译 错误 IDbSet 实现 | 更新日期: 2023-09-27 18:26:48
我正在尝试为特定的对象类型实现IDbSet<>
接口,但在尝试实现IDbSet<>.Create<TDerivedEntity>()
时遇到了一个似乎不可避免的错误。代码最好地解释了这个问题:
class ProductSet : IDbSet<Product>
{
public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class, Product
{
}
}
这会产生错误
Cannot specify both a constraint class and the ‘class’ or ‘struct’ constraint"
如果我删除类约束,我会得到以下错误:
The constraints for type parameter 'TDerivedEntity' of method 'TestEf.ProductSet.Create<TDerivedEntity>()' must match the constraints for type parameter 'TDerivedEntity' of interface method 'System.Data.Entity.IDbSet<TestEf.Product>.Create<TDerivedEntity>()'. Consider using an explicit interface implementation instead.
我确实尝试过使用显式接口实现,这很有效,但如果我不想使用显式界面实现呢?
我发现使用Extension方法扩展T的IDbSet要容易得多。
至于实际问题:
public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : Product, new()
我想应该把它修好。