实现IDbSet时编译错误

时间:2012-03-05 11:48:28

标签: c# .net

我正在尝试为特定对象类型实现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.

我确实尝试使用显式接口实现,但是如果我不想使用显式接口实现会怎么样?

1 个答案:

答案 0 :(得分:0)

我发现使用Extension方法扩展T的IDb容易得多。

关于实际问题:

public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : Product, new()

我认为应该修复它。