2012-01-19 5 views
1

クラスライブラリアセンブリでは、プロパティの下に複数の設定ファイルを追加します。ファイルからDLLの設定をロードする

設定ファイルに新しいエントリを追加すると、デフォルト値はルートのapp.configに保存されます。 クラスライブラリアセンブリであるため、app.configは使用されません。しかし私は使いたいので、ファイルからデフォルト値を上書きすることができます。

私はexeファイルのApp.configファイルにクラスライブラリのapp.configの内容をコピーすることができます知っているが、私は同期して、手動でファイルを保持することの道を取る必要はありません。

+1

dllには構成ファイルを使用しないでください。アプリケーション用に1つの構成ファイルのみが存在し、構成プロパティはプロジェクト自体にのみ表示されます。解決策は、構成ファイルを使用してDLLの変数を設定することではありません。 –

答えて

2

実行中のプログラムの設定ファイルとは別のDLLから設定ファイルにアクセスする方法を尋ねられますか?おそらくこれは素晴らしい考えではありませんが、独自のバージョンのConfigurationManagerを作成することができます。だから今、あなたが使用することができます

public class SettingsManager 
{ 
    private static Settings settings; 

    public static Settings Settings 
    { 
     get 
     { 
      if (settings == null) 
      { 
       settings = new Settings(); 
      } 

      return settings; 
     } 
    } 
} 

public sealed class Settings 
{ 
    private readonly string settingsPath; 
    private XmlDocument doc; 

    private XmlDocument Doc 
    { 
     get 
     { 
      if (doc == null) 
      { 
       doc = new XmlDocument(); 
       doc.Load(settingsPath); 
      } 

      return doc; 
     } 
    } 

    public string this[string name] 
    { 
     get 
     { 
      return GetSetting(name); 
     } 
    } 

    internal Settings() 
    { 
     settingsPath = @"\\path\to\app.config"; 
    } 

    internal Settings(string settingsPath) 
    { 
     this.settingsPath = settingsPath; 
    } 

    public string GetSetting(string settingName) 
    { 
     return Doc.SelectSingleNode(string.Format("/configuration/settings/setting[@key='{0}']", settingName)).Attributes["value"].Value; 
    } 
} 

が続いてヘルパークラスを作成します。まず、(設定ファイルを解析するために、常にXmlDocumentを使用しています)、あなたの設定ファイルから設定を取得するクラスを作成しますコンソールアプリケーションからあなたのようなクラスライブラリうのConfigurationManagerからはSettingsManagerクラス:ここ

SettingsManager.Settings["mysetting"] 

は、あなたの設定ファイルが

どのように見えるかです
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <settings> 
     <setting key="mysetting" value="my value"></setting> 
    </settings> 
</configuration> 
関連する問題