我正在尝试将存储库模式用于在 .Net 2.0 中创建的站点。所有客户端代码都需要绑定(bind)数据表,我无法更改它,所以请多多包涵。
我有一个(可能是愚蠢的)问题。我不知道如何将强类型实体传递到我的具体存储库。该接口(interface)迫使我传递一个 Employee 类型,但我需要传递一个 Developer 类型(它派生自 Employee),因为它具有在基类中找不到的特定属性。
public interface IEmployeesRepository
{
DataTable Employees { get; }
void SaveEmployee(Employee employee);
void DeleteEmployee(Employee employee);
}
public class DevelopersRepository : IEmployeesRepository
{
public void SaveEmployee(Developer employee)
{
Database db = new SqlDatabase(connectionString);
DbCommand dbCommand = db.GetStoredProcCommand("Developers_Insert", employee.ProgrammingLanguage);
db.ExecuteNonQuery(dbCommand);
}
}
}
我试过使用泛型,但我仍然没有强类型对象,对吗?
最佳答案
我可能是错的,但听起来您想使用通用约束:
public interface IEmployeeRepository<T>
where T : Employee
{
DataTable Employees { get; }
void SaveEmployee(T employee);
void DeleteEmployee(T employee);
}
public class DevelopersRepository : IEmployeeRepository<Developer>
{
public void SaveEmployee(Developer employee)
{
Database db = new SqlDatabase(connectionString);
DbCommand dbCommand = db.GetStoredProcCommand("Developers_Insert", employee.ProgrammingLanguage);
db.ExecuteNonQuery(dbCommand);
}
}
关于c# - .Net 2.0 的简单存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5424996/