2017-08-14 3 views
0

J'ai créé une DLL contenant des fonctionnalités qui doivent être partagées d'un projet à l'autre. Cependant, je peux avoir besoin d'ajuster les paramètres de la DLL à partir d'un projet le référençant. Quelle est la meilleure façon d'exposer les paramètres de configuration de la DLL à utiliser par un autre projet dans une solution entièrement différente?Quelle est la meilleure façon de créer une DLL utilitaire qui peut être configuré en consommant une application?

façons j'ai essayé:

appsettings importation

ApplicationSettings importation

configuration actuelle, Consommant valeurs de réglage de la solution sont ignorés/pas définie, pourquoi?

dll mise

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

Solution Consommateur 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

Si vous voulez le plus de flexibilité, vous devez accepter une interface injectée avec des propriétés qui sont votre «configuration». Ensuite, le client peut l'implémenter comme il le souhaite - base de données, fichier de configuration, etc. – Crowcoder

+0

Ajout de la configuration pour le client et le dll cas d'utilisation – user1732364

Répondre

2

Vous n'avez pas besoin d'importer quoi que ce soit. Dans .NET, une DLL obtient ses paramètres de configuration à partir de l'application parente, et non à partir de sa propre configuration. Ainsi, par exemple si vous avez besoin de la DLL pour lire une chaîne de connexion de la configuration de l'application parent, vous pouvez simplement utiliser

return ConfigurationManager.AppSettings["ConnectionString"]; 

Cela lecture de la section de configuration personnalisée dans le app.config pour les contenant application Windows ou de web.config si c'est une application web.

+0

Et si vous voulez l'organiser, vous devez créer une section de configuration personnalisée, donc toutes les configurations pour votre bibliothèque/utilitaire dll seront dans une section de la config et non mélangées avec l'autre configs. plus à: https://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx – Alexrgs

+0

J'ai ajouté le code pour fournir une visibilité à mon installation. Qu'est-ce que je rate? – user1732364

0

Une chose que vous pourriez faire est de faire quelque chose comme une classe MyLibraryConfiguration.

Lorsque vous créez une instance de l'objet dans votre bibliothèque (ou peut-être dans une fonction statique qui va définir des valeurs statiques), vous pouvez passer ce Configuration pour définir les valeurs modifiables.