我正在使用MVC 5应用程序,我已将解决方案分成以下几层:
DomainLayer - 包含我的模型的POCO类以及我的所有接口和服务。 DataLayer - 引用Entity Framework和DomainLayer,定义DbContext并包含我的存储库。 WebLayer - 引用DomainLayer和DataLayer,调用服务并呈现视图。我正在使用Unity将所需的服务注入控制器。
我的许多页面显示制造商和系列等下拉列表,这些查找列表在整个站点中都是相同的,我想要一种获取数据的核心方法。
我最初的想法是创建一个LookUpListService,将存储库注入其中并让我的其他服务调用它。然而,这会有更多的查找列表,我需要将更多的存储库注入到LookUpListService构造函数中。
我现在想也许我应该创建一个抽象工厂并让我的DataLayer实现它,因为它可以自动访问所有存储库,每次出现新列表时我都不需要注入它们。
有没有更好的方法来实现这一目标?如果不是以上哪个是更好的选择?
答案 0 :(得分:1)
使LookUpListService
通用并接受通用存储库(或者如果您有任何查找存储库)。
public class LookUpListService<T> where T: IRepository{
public LookUpListService(T repository){
this.repository = repository;
}
T repository;
// your retrieval logic here
}
通过这种方式,您可以防止来自许多查找服务的巨大构造函数注入或类膨胀。