2010-11-20 15 views
2

いくつかの静的プロパティを公開するSettings.csクラスがあります。これらのプロパティは読み取り専用です。このクラスは、Webサイトとは別のDLLに存在します。ウェブサイトの設定クラス

アプリケーションの開始時に、Settings.csクラスを初期化し、静的プロパティに値を設定する必要があります。これは、アプリケーション開始ごとに1回実行されます。

WebアプリケーションのApplication_Startイベントにフックしています。 Settings.csクラス(別のDLLに存在する)でこれらの「プライベート」静的プロパティにアクセスするにはどうすればよいですか?

Settings.csクラスに1つのオプションが設定されています。しかし、もう一度、アプリケーションを1回起動するごとに1回行う必要があります。

このようなケースを処理するデザインパターンはありますか?

はあなたに に関して

答えて

1
public class Settings 
{ 
    const string SettingPath = "Settings"; 
    public static Settings Instance 
    { 
     get 
     { 
      var result = HttpContext.Application[SettingPath] as Settings; 
      if (result == null) 
      { 
       var result = new Settings(); 
       HttpContext.Current.Application[SettingPath] = result; 
      } 
      return result; 
     } 
    } 

    private Settings() 
    { 
     // Load properies here 
    } 

    // Properties Here 
} 

に感謝し、あなただけのセッションごとに設定を保存する必要がある場合 - その後、[「SessionSetting」] HttpContext.Current.Sessionを使用

+0

状況は異なります Settings.csはDLL-1にあります Application_Startイベントの内部では、クラス設定のプロパティを入力する必要があります。私はアプリケーションオブジェクトに設定を入れた後ではありません。 ありがとう – Bill

1

ではなく、プログラムの設定を設定しますApplication_Startイベントの代わりに、Web.configに宣言的に指定された設定を使用します。 Settingsクラスは、Web.configからこれらの値を読み取り、返します。

それは...このような何かを行くだろうWeb.configにあなたが<appSettings />セクションで、あなたの設定の値を定義することができます。

<configuration> 
    <appSettings> 
     <add key="Setting1" value="..." /> 
     <add key="Setting2" value="..." /> 
     ... 
     <add key="SettingN" value="..." /> 
    </appSettings> 

    ... 
</configuration> 
もちろん

、というよりもSetting1Setting2、というように、あなたが希望あなたの設定にもっとわかりやすい名前を使用してください。あなたがConfigurationManage.AppSettings["settingName"]を使用<appSettings>に値を読み込むための

using System.Configuration; 

public class Settings 
{ 
    public int Setting1 
    { 
     get 
     { 
      return Convert.ToInt32(ConfigurationManage.AppSettings["Setting1"]); 
     } 
    } 

    public string Setting2 
    { 
     get 
     { 
      return ConfigurationManage.AppSettings["Setting1"]; 
     } 
    } 

    ... 
} 

注:次のように

あなたSettingsクラスでは、あなたのコードが見えるでしょう。これにより、指定されたapp設定のvalueが文字列として返されます。したがって、特定のプロパティが整数、ブール値、または他のタイプの場合は、上記のようにSetting1のように変換する必要があります。

<appSettings>セクションの使用の詳細については、AppSettings in Web.configを参照してください。

ハッピープログラミング!

+0

こんにちはスコット、私は後に何を説明しましょう、おそらくclearer.I settings.csクラスには、 "インターフェイス"タイプのプロパティが含まれています。私はUnityを使用してそれらのデフォルト実装を定義していますインターフェイス。私は、application_startでsettings.csを一度初期化し、初期化手段でインタフェースの実装を解決する必要があります。しかし、私は、ブートストラッパーをapplication_startに接続しています。それはオブジェクトを解決するいくつかのことです。私が望むのは、プロパティのROプロパティを保持することですが、それを一度作成することができます。ありがとう – Bill

関連する問題