带有继承类的IRepository

时间:2011-01-03 13:47:09

标签: c# repository-pattern

为了与数据输入的Repository模式保持一致,我对使用继承类有一个疑问。例如,假设我有班级......

class Employee

IEmployeeRepository
{
 Add(Employee employee);
}

这项工作正常,到目前为止没有任何问题......但现在让我说我继续......

class Manager : Employee

好的,现在让我们假设我从不需要进入与员工不同的经理?这里最好的方法是什么?会是一个场景,如..

IEmployeeRepository
{
 Add<T>(T employee) where T : Employee
}

是最好的方法,还是我需要为每种类型抽象不同的存储库?

3 个答案:

答案 0 :(得分:1)

如果他们都是员工,我可能会创建一个界面并将其约束。例如:

IEmployeeRepository
{
 Add<T>(T employee) where T : IEmployee
}

答案 1 :(得分:0)

如果处理的事情不同,那么您应该为新类型创建另一个存储库。

如果两者从来没有不同的逻辑(他们真的不应该考虑管理员在你的情况下仍然是一个员工),那么你可以重新使用你已经拥有的。您甚至不需要更改代码(只要Manager继承自Employee类):

public interface IEmployeeRepository
{
    Add(Employee employee);
}

应该工作得很好。

答案 2 :(得分:0)

  

让我们假设我永远不需要   输入不同于的经理   雇员

所以你没有抽象。您只有Employee并且需要一个存储库。

  

我需要抽象一个不同的   每种类型的存储库?

如果你有一些子类的抽象,那就是。重点是通常不需要为子类设置抽象类的存储库。