すごい単調だけど、Configオブジェクトを複数管理するクラスを作る。
Configなんて1つだけでいいじゃんと思われがちだけど、大掛かりなシステムだったり、色んな機能を持ち合わせた時に、「この設定はAファイルに書いて、この設定はBファイルに書きたい」というのが出てくる時がやっぱりあるわけ。
こんなのくらいだと、ちゃら~っと書けば済むんだけど、以前に作ったソフトで作ったクラスなので、メモがわり的に残しておこう。
ConfigManager.vb
Imports System.Configuration ''' <summary> ''' Configurationオブジェクト管理クラス ''' </summary> ''' <remarks>Configurationオブジェクトの一括管理を行い、いたる場面で利用することを可能とします。</remarks> Public NotInheritable Class ConfigManager ''' <summary> ''' Configurationオブジェクトリスト ''' </summary> ''' <remarks>登録されたConfigurationオブジェクトを管理します。</remarks> Private Shared configs As Dictionary(Of String, Configuration) = New Dictionary(Of String, Configuration) ''' <summary> ''' コンストラクタ ''' </summary> ''' <remarks>外部からのインスタンス化は行えません。</remarks> Private Sub New() End Sub ''' <summary> ''' Configurationオブジェクト追加処理 ''' </summary> ''' <param name="key">名前</param> ''' <param name="config">Configurationオブジェクト</param> ''' <remarks>Configurationオブジェクトを管理に追加します。</remarks> Public Shared Sub add(ByVal key As String, ByVal config As Configuration) If configs.ContainsKey(key) Then remove(key) End If configs.Add(key, config) End Sub ''' <summary> ''' Configurationオブジェクト取得処理 ''' </summary> ''' <param name="key">名前</param> ''' <value>void</value> ''' <returns>Configurationオブジェクト</returns> ''' <remarks>名前を指定して、管理されているConfigurationオブジェクトを取得します。</remarks> Public Shared ReadOnly Property Config(ByVal key As String) As Configuration Get If configs.ContainsKey(key) Then Return configs(key) Else Return Nothing End If End Get End Property ''' <summary> ''' Configurationオブジェクト削除処理 ''' </summary> ''' <param name="key">名前</param> ''' <returns>成功/失敗</returns> ''' <remarks>名前を指定して、Configurationオブジェクトを管理から削除します。</remarks> Public Shared Function remove(ByVal key As String) As Boolean If configs.ContainsKey(key) Then Return configs.Remove(key) Else Return False End If End Function ''' <summary> ''' Configurationオブジェクト存在チェック処理 ''' </summary> ''' <param name="key">名前</param> ''' <returns>存在する/存在しない</returns> ''' <remarks>名前を指定して、Configurationオブジェクトが管理されているかどうかをチェックします。</remarks> Public Shared Function contains(ByVal key As String) As Boolean Return configs.ContainsKey(key) End Function End Class