检索分层应用程序中的查找列表

时间:2014-01-16 15:40:41

标签: asp.net-mvc architecture dependency-injection

我正在使用MVC 5应用程序,我已将解决方案分成以下几层:

DomainLayer - 包含我的模型的POCO类以及我的所有接口和服务。 DataLayer - 引用Entity Framework和DomainLayer,定义DbContext并包含我的存储库。 WebLayer - 引用DomainLayer和DataLayer,调用服务并呈现视图。我正在使用Unity将所需的服务注入控制器。

我的许多页面显示制造商和系列等下拉列表,这些查找列表在整个站点中都是相同的,我想要一种获取数据的核心方法。

我最初的想法是创建一个LookUpListService,将存储库注入其中并让我的其他服务调用它。然而,这会有更多的查找列表,我需要将更多的存储库注入到LookUpListService构造函数中。

我现在想也许我应该创建一个抽象工厂并让我的DataLayer实现它,因为它可以自动访问所有存储库,每次出现新列表时我都不需要注入它们。

有没有更好的方法来实现这一目标?如果不是以上哪个是更好的选择?

1 个答案:

答案 0 :(得分:1)

使LookUpListService通用并接受通用存储库(或者如果您有任何查找存储库)。

public class LookUpListService<T> where T: IRepository{
    public LookUpListService(T repository){
        this.repository = repository;
    }
    T repository;
    // your retrieval logic here
}

通过这种方式,您可以防止来自许多查找服务的巨大构造函数注入或类膨胀。

相关问题