【发布时间】:2015-01-30 11:16:38
【问题描述】:
我在 c# 中有以下类:
public class Customer{
public long Id { get; set;}
public String Firstname { get; set;}
public String Lastname { get; set;}
public Customer(long id, String firstname, String lastname){...}
}
public class Book{
public long Id { get; set;}
public String Title { get; set;}
public String Author{ get; set;}
public int NumberOfCopies{ get; set;}
public Book(long id, String title, String author, int numberofcopies){...}
}
我的仓库是通用的,界面如下:
public interface IGenericRepository<T> where T : class, new(){
Add(T entity);
Update(T entity);
Delete(T entity);
GetAll();
}
因此,要为客户创建存储库,我将创建 IGenericRepository
我的问题是,我怎样才能使这个服务通用并且仍然保留实体构造函数的参数?
明确地说,我想要一个通用的服务类,它可以添加书籍和客户,但使用相同的方法。比如:
Add(<constructor parameters of T>)
这个方法将从一个拥有所有服务的控制器类中调用。 GUI 然后可以通过控制器访问这些服务方法。
这可能吗?如果是,如何?如果没有,是否有更好的解决方案来实现这一目标?
提前致谢!
【问题讨论】:
-
请澄清“通用服务类,它可以添加书籍和客户,但使用相同的方法”是否意味着可以包含两种类型的单个类或在代码中语法看起来相同的兄弟通用类型。
标签: c# generics repository