创建可以通过使用应用程序配置的Utility dll的最佳方法是什么?

时间:2017-08-14 20:08:06

标签: c# app-config application-settings

我创建了一个dll,其中包含一些从项目到项目共享的功能。但是,我可能需要从引用它的项目中调整dll的设置。在完全不同的解决方案中公开另一个项目使用的dll配置设置的最佳方法是什么?

我尝试过的方式:

appSettings import

ApplicationSettings import

当前设置,消耗解决方案设置值被忽略/未设置,为什么?

dll设置

public class ApplicationSettingsRetriever : IApplicationSettingsRetriever
{
    public string LogEnvironmentSetting => ConfigurationManager.AppSettings.Get("LogEnvironment");
}

Consumer Solution app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <appSettings>
   <add key="LogEnvironment" value="local"/>
  </appSettings>
</configuration>

2 个答案:

答案 0 :(得分:2)

您无需导入任何内容。在.NET中,DLL从父应用程序获取其配置设置,而不是从其自己的配置获取。因此,例如,如果您需要DLL从父应用程序的配置中读取连接字符串,则只需使用

即可
return ConfigurationManager.AppSettings["ConnectionString"];

这将从包含Windows应用程序的app.config中的自定义配置部分读取,或者从web.config读取,如果它是Web应用程序。

答案 1 :(得分:0)

你可以做的一件事就是制作类似MyLibraryConfiguration类的东西。

当您在库中创建对象的实例时(或者可能在静态函数中设置静态值),您可以传递此Configuration来设置可更改的值。