1

我創建了一個genericrepositoryASP.NET MVC 4,需要幫助讓我GenericRepository工作

這裏是我的代碼:

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。它是空的,沒有任何東西,但employeeRepository是從GenericRepository繼承的。我假設employeeRepository中應該有「Save,Insert,Delete」。但他們不在那裏,當我在我的服務層使用employeeRepository。

public interface IEmployeeRepository 
{ 

} 

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

回答

2

我會假設你在你的服務層,而不是使用EmployeeRepository IEmployeeRepository,由於IEmployeeRepository不有任何的那些方法,這是有道理的。

您正在對接口進行編碼,而不是實現,所以雖然實際對象具有這些方法,但您無法通過反射來調用它們。您需要讓IEmployeeRepository繼承IGenericRepository<T>以獲得其他方法。

+0

非常感謝。我忘了補充一點。 – qinking126