Files
Pilz/Pilz.Configuration/Settings.vb

41 lines
1.2 KiB
VB.net

Imports System.Runtime
Imports Newtonsoft.Json
Public Class Settings
Implements ISettings
<JsonProperty(NameOf(Settings))>
Private ReadOnly mySettings As New Dictionary(Of String, IChildSettings)
<JsonIgnore>
Public ReadOnly Property Settings As IReadOnlyCollection(Of IChildSettings) Implements ISettings.Settings
Get
Return mySettings.Values
End Get
End Property
Public Function [Get](Of T As IChildSettings)() As T Implements ISettings.Get
Return mySettings.Values.OfType(Of T).FirstOrDefault
End Function
Public Sub Reset() Implements ISettings.Reset
For Each s In mySettings.Values
s.Reset()
Next
End Sub
Public Sub Initialize(providers As List(Of ISettingsProvider)) Implements ISettings.Initialize
For Each provider In providers
For Each identifier In provider.GetSettingsIdentifiers
If Not mySettings.ContainsKey(identifier) Then
Dim s = provider.CreateInstance(identifier)
s.Reset()
mySettings.Add(identifier, s)
End If
Next
Next
End Sub
End Class