我正在尝试为特定对象类型实现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.
我确实尝试使用显式接口实现,但是如果我不想使用显式接口实现会怎么样?
答案 0 :(得分:0)
我发现使用Extension方法扩展T的IDb容易得多。
关于实际问题:
public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : Product, new()
我认为应该修复它。