继承自存储库接口

时间:2014-07-24 15:38:31

标签: c# inheritance repository-pattern unit-of-work

我有点困惑自己。我有一个IUnitOfWorkIGenericRepostoryIPerson

public interface IUnitOfWork<C> : IDisposable 
              where C : DbContext, new()
{
    C _db { get; }
    IGenericRepository<C, IPerson> PersonRepository { get; }
}

public interface IGenericRepository<C, TEntity> 
              where TEntity : class 
              where C : DbContext, new()

我试图实施它们:

class UnitOfWork : IUnitOfWork<RetailDB>
{
    public RetailDB _db { get; private set; }
    private GenericRepository<Person> _personRepository; 

    public UnitOfWork(RetailDB db)
    {
        _db = db;
    }

    public IGenericRepository<RetailDB, IPerson> PersonRepository
    {
        get
        {
            if (_personRepository == null)
                _personRepository = new GenericRepository<Person>(_db);
            return _personRepository;
        }
    }
}

public class GenericRepository<TEntity> : IGenericRepository<RetailDB, TEntity> 
                                                   where TEntity : class 
{


}

我觉得这应该有效,但当我返回UnitOfWork时,我在_personRepository收到错误:

Cannot implicitly convert type 'GenericRepository<Person>' to 'IGenericRepository<RetailDB,IPerson>'. An explicit conversion exists (are you missing a cast?)

我对这种更大规模的继承感到陌生,我确定我错过了一些明显的东西。我想,因为GenericRepository声明了IGenericRepository C的具体类型,所以一切都应该正确。 Person正确继承IPerson。非常感谢任何指导

0 个答案:

没有答案