2017-08-14 9 views
0

私は、プロジェクト間で共有されるいくつかの機能を持つdllを作成しました。しかし、私はそれを参照するプロジェクトから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が必要なのであれば、たとえば、あなたは、単にこれは含むWindowsアプリケーション用app.configでカスタム構成セクションから読み取る、またはweb.configからだろう

return ConfigurationManager.AppSettings["ConnectionString"]; 

を使用することができますそれがウェブアプリケーションの場合。

+0

整理したい場合は、カスタム設定セクションを作成する必要があります。ライブラリ/ユーティリティdllのすべての設定はconfigのセクションにあり、 configs。詳細はhttps://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx – Alexrgs

+0

私の設定に可視性を提供するコードを追加しました。私は何が欠けていますか? – user1732364

0

あなたができることの1つは、MyLibraryConfigurationクラスのようなものを作ることです。

ライブラリ内のオブジェクトのインスタンスを作成する場合(または静的な値を設定する静的関数内にある場合)は、Configurationを渡して変更可能な値を設定できます。

関連する問題