Mat*_*ves 5 c# asp.net .net-1.1 repository-pattern
在.NET 1.1(C#)中使用存储库模式的典型方法是什么?
我正在寻找类似于Stack Overflow问题的内容,除了在.NET 1.1中,我没有泛型,所以我只是想看看它是否可能(我确定它是),以及它是如何完成的.
这是很有可能的,但您要么必须不使用通用接口,要么必须进行大量转换。使用接口...
public interface IRepository
{
public object Get(int id); // or object id
public void Save(object obj);
}
public class CustomerRepository : IRepository
{
public object Get(int id) { // implementation }
public void Save(object obj) { // implementation }
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但调用代码必须将对象转换为正确的类型,并且具体实现中的方法必须检查类型并引发异常。直接转换要求运行时异常,因此我会避免这种方法。
我建议的方法是不要让您的存储库实现通用接口。相反,让他们按照约定实现通用命名的方法。
public class CustomerRepository
{
public Customer Get(int id) { // implementation }
public void Save(Customer entity) { // implementation }
}
public class EmployeeRepository
{
public Employee Get(int id) { // implementation }
public void Save(Employee entity) { // implementation }
}
Run Code Online (Sandbox Code Playgroud)
编辑添加:我重新阅读了链接的答案。最后一段完整的内容让我不知所措,但我可以对使用 DI 进行一些扩展。在大多数情况下,使用 DI 注入“通用”(在本例中意味着从公共接口派生)存储库是没有意义的。除了通用方法之外,存储库还将具有实体特定方法,例如GetCustomersWithPastDueAccounts. 您可以使用该方法定义 ICustomerRepository 并让您的 CustomerRepository 实现该方法。然后,您可以使用依赖项注入在运行时注入 CustomerRepository。这没有什么问题,但根据我的经验,一个存储库的多个实现是相当罕见的,因此这样做没有什么意义。
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |