2011-07-18 6 views
4

私はキャッシュ、キュー、およびデータベースのいくつかの構成ファイルを持っているアプリケーションを持っています。接続ファイルを作成するためのベストプラクティス

public class ServerConfiguration: ConfigurationSection 
{ 
    [ ConfigurationProperty(FOO, DefaultValue = "", IsRequired = false) ] 
    public string FOO 
    { 
     get { return (string)this[FOO]; } 
     set { this[FOO] = value; } 
    } 
} 

これは私が設定ファイルに対して行うもので、私はまたいくつかの継承階層を持っています。

設定を処理するために使用するものは何ですか?また、この目的のためのベストプラクティスは何ですか?

+1

私にはかなり似合います。私はそれが静的でシングルトンでなければならないと思うが、そうでなければ改善すべきではない。 – Yuck

+0

+1:それはシングルトンでなければなりません – surfasb

+0

@Yuckシングルトンは単体テストを難しくします。インターフェースとIoCのユーザはより柔軟になります – Bronumski

答えて

3

Microsoftの設定ライブラリが大好きですが、私のアプリケーションがそれに依存していないことを確認しようとしています。あなたのコードでは、コンフィギュレーションを使用し、これまで今、あなただけIServerConfigurationを心配する必要があり、あなたがなくても、あなたの実装を変更することができ

public class ServerConfiguration : ConfigurationSection, IServerConfiguration 
{ 
    [ ConfigurationProperty(FOO, DefaultValue = "", IsRequired = false) ] 
    public string FOO 
    { 
     get { return (string)this[FOO]; } 
     set { this[FOO] = value; } 
    } 
} 

public interface IServerConfiguration 
{ 
    public string FOO { get; } //Unless I am updating the config in code I don't use set on the interface 
} 

:これは通常、あなたの例は次のようになりますので、私の構成セクションには、インターフェイスを実装した関係します使用法を変更します。時には、開発中にハードコードされたクラスで始めて、実際には異なる環境で異なる値を設定する必要がある場合にのみ、設定セクションに変更します。

設定セクションを使用している場合は、ConfigurationManagerにも依存しています。私はIConfigurationProvider [T]を使用してTをIServerConfigurationにすることで、これを自分のコードから隠しています。これについては設定無視の下で私のブログで見ることができます。

http://bronumski.blogspot.com/search/label/Configuration

関連する問題