2017-08-14 31 views
0

我已经创建了一个dll,它有一些功能,可以在项目之间共享。不过,我可能需要从引用它的项目中调整dll的设置。在另一个完全不同的解决方案中公开配置设置以供其他项目使用的最佳方式是什么?创建可以通过使用应用程序进行配置的实用程序dll的最佳方法是什么?

方面,我曾尝试:

的appSettings导入

的applicationSettings导入

当前设置,消费解决方案设定值被忽略/不设置,为什么呢?

DLL设置

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

消费者解决方案的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> 
+0

如果您想获得最大的灵活性,您应该接受具有属于您的“配置”属性的注入接口。然后,客户端可以实现他们想要的 - 数据库,配置文件,无论如何。 – Crowcoder

+0

为客户端和dll使用案例添加了设置 – user1732364

回答

2

你不需要输入任何东西。在.NET中,DLL从父应用程序获取其配置设置,而不是从它自己的配置中获取。因此,举例来说,如果你需要的DLL来读取从父应用程序的配置连接字符串,你可以简单地使用

return ConfigurationManager.AppSettings["ConnectionString"]; 

这将在包含Windows应用程序在app.config自定义配置部分阅读,或者web.config如果它是一个Web应用程序。

+0

如果你想组织它,你应该创建一个自定义配置部分,因此你的库/实用工具DLL的所有配置都将在配置的一部分中,而不会与其他配置混淆CONFIGS。更多信息请访问:https://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx – Alexrgs

+0

我已添加代码以提供对我的设置的可见性。我错过了什么? – user1732364

0

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

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

相关问题