在我的Domain Driven Layers中,Infrastructure Layer Project是类库Project,它需要使用配置文件,不仅可以连接到数据库,还可以创建存储库和实体。但是,链接(在帖子末尾提到类库项目不能有配置文件(我认为,类库不能有app.config)。
我的问题是,如果没有,那么如何为我的基础设施层(类库)项目创建和使用配置文件?在哪个项目和什么应该是命名惯例?
DETAIL:
我正在关注C#.NET中的域驱动设计。在此模型(Visual Studio解决方案)中,有四个层(Visual Studio中的每个项目作为图层),如下所示:
Infrastructure Layer Project(作为.NET clas Library)需要使用配置文件,以便:
A)创建存储库(使用存储库工厂), B)创建实体(使用EntityFactoryBuilder), C)连接数据库。
对于我在项目“ProjectName.Infrastructure”下创建的配置文件“ProjectName.Infrastructure.config”,方法是将其属性(使用Visual Studio)“复制到输出窗口”设置为“CopyAlways”。
但是,根据一些帖子(最后的链接):
“类库项目(如我的”Infrastructure Layer Project“)不能有配置文件(应用程序配置文件或app.config文件),而是调用应用程序应提供/提供配置文件,并且该类库使用此提供的文件”
链接(我研究过):
How to access a custom config from my class library application?
和
答案 0 :(得分:3)
我们的想法是将配置文件保留在客户端(应用程序或表示层级别),而不是服务器端(类库或DLL),为什么?
因为类库/ dll(Infrastructure Layer / Project)服务的目的是在多个客户端(表示层或软件应用程序)之间共享,每个客户端(软件应用程序)配置有自己的配置设置,可以由类库(.NET的ConfigurationManager类Syste.Configuration)使用(在运行时)确保提供调用/客户端应用程序到类库的配置,因此类库可以使用ConfigurationManager来使用调用/客户端软件的配置)。
换句话说,表示层的职责是提供其配置设置(在其App.config文件中),以便类库(DLL)访问这些配置设置(驻留在特定客户端的App.config文件中)如果需要,使用ConfigurationManager类(System.Configuration)运行(;在运行时)。
我认为它非常有用,因为每个应用程序都有自己的配置,而类libary将能够通过.NET System(System.Configuration)访问调用者/客户端的配置,如上所述。
(注意:我读过那个类库也可以有自己的配置(可能是供内部使用)但是类库的内部配置设置与App.Config无关,我认为)