たきるブログ

C#やOracleなどの情報を書いています。

【VB】Configオブジェクトを複数管理する

すごい単調だけど、Configオブジェクトを複数管理するクラスを作る。

Configなんて1つだけでいいじゃんと思われがちだけど、大掛かりなシステムだったり、色んな機能を持ち合わせた時に、「この設定はAファイルに書いて、この設定はBファイルに書きたい」というのが出てくる時がやっぱりあるわけ。

こんなのくらいだと、ちゃら~っと書けば済むんだけど、以前に作ったソフトで作ったクラスなので、メモがわり的に残しておこう。

20101214_001.zip

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