1

我创建了一个通用存储库

这是我的代码:

public interface IGenericRepository<T> : IDisposable where T: class 
{
    void Save();

    void Insert(T entity);
    void Delete(T entity);
}

public class GenericRepository<T> : IGenericRepository<T> where T: class 
{
    private readonly DSContext _context;

    public GenericRepository()
    {
        _context = new DSContext();
    }

    public void Save()
    {
        _context.SaveChanges();
    }

    public void Insert(T entity)
    {
        _context.Set<T>().Add(entity);
    }


    public void Delete(T entity)
    {
        _context.Set<T>().Remove(entity);
    }
}

这是我的员工存储库。它是空的,什么都没有,但是employeeRepository 是从GenericRepository 继承的。我假设在employeeRepository 中应该可以使用“保存、插入、删除”。但是当我在服务层中使用employeeRepository 时,它们不存在。

public interface IEmployeeRepository
{ 

}

public class EmployeeRepository: GenericRepository<Employee>, IEmployeeRepository
{
    public EmployeeRepository():base()
    {
    }
}
4

1 回答 1

2

我假设您IEmployeeRepository在服务层中使用,而不是 EmployeeRepository,并且由于 IEmployeeRepository 没有任何这些方法,所以这是有道理的。

您正在针对接口而不是实现进行编码,因此虽然实际对象确实具有这些方法,但您将无法在不诉诸反射的情况下调用它们。您还需要继承 IEmployeeRepositoryIGenericRepository<T>才能获取其他方法。

于 2013-07-13T19:52:21.010 回答