为dll提供单独的配置文件是一个好的设计吗?

时间:2010-07-22 19:58:45

标签: .net architecture

为你设置一个单独的配置文件是好的设计吗?

我注意到从应用程序调用dll时,它不会读取它。

dll能够读取的是machine.config文件。

5 个答案:

答案 0 :(得分:5)

使dll依赖于配置文件并不理想,当您开始进行单元测试或移动它时,它会变得非常痛苦。

更好的解决方案是从调用应用程序中传递来自配置设置的任何值,例如WebApp或Windows App等,并存储应用程序或Web配置中所需的任何设置。

答案 1 :(得分:3)

看起来你有两个不同的问题。

  1. 您的程序的用户不会考虑配置您的应用程序和任何相关的DLL。在我看来,为DLL提供单独的配置文件可能会让用户感到困惑。拥有单独的配置文件并不是糟糕的设计,但它也不一定是良好的设计。

  2. DLL当然可以读取文件。检查DLL是否从正确的位置读取文件(例如,检查当前工作目录)。

答案 2 :(得分:2)

这实际上取决于使用情况。对于只是主应用程序一部分的DLL,没有。但是,对于某些插件方案,包含特定于库的配置可能更清晰,然后必须在程序集本身中提供其加载。您也可以通过修改应用程序自己的配置文件(如果有)来执行此操作。

例如,您可能具有以下特定于插件的设置:

<IPluginConfiguration>
      <PluginSpecificSetting name="PluginName">Value</PluginSpecificSetting>
</IPluginConfiguration

或者您可以在app.config中使用子部分,例如

<configuration>
     <PluginSettings>
         <Plugin1>
             <PluginSpecificSetting name="PluginName">Value</PluginSpecificSetting>
         </Plugin1>
     </PluginSettings>
</configuration>

要么工作,前者在某些情况下更难维护,但在运行时加载更痛苦,后者需要更多的配置和维护,但可以在运行时更简单地访问。

答案 3 :(得分:1)

可能不是单独的配置文件,但您可以轻松地为每个dll设置单独的配置部分。然后它很容易在多个来源中使用。

答案 4 :(得分:1)

我倾向于将配置选项传递给需要它们的每个层。然后,配置文件将作为最上层的传递约定。这对我来说最有意义。

在这个场景中,DLL不需要读取配置文件。

我的理由归结为分离关注点。除非DLL的目的是读取硬盘上的文件,否则它不应该读取硬盘上的任何文件。