Imports Newtonsoft.Json '----------- Classe che fa riferimento alle Feature del file Json ----------- Imports EgtWPFLib5 Imports System.Collections.ObjectModel Public Class JsonStrategyFeature Inherits VMBase #Region "FIELDS & PROPETIES" Private m_sName As String Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value NotifyPropertyChanged(NameOf(sName)) End Set End Property Private m_nPrc As Integer Public Property nPrc As Integer Get Return m_nPrc End Get Set(value As Integer) m_nPrc = value NotifyPropertyChanged(NameOf(nPrc)) End Set End Property Private m_nGrp As Integer Public Property nGrp As Integer Get Return m_nGrp End Get Set(value As Integer) m_nGrp = value NotifyPropertyChanged(NameOf(nGrp)) End Set End Property Private m_TopologyList As New ObservableCollection(Of JsonTopology) Public Property TopologyList As ObservableCollection(Of JsonTopology) Get Return m_TopologyList End Get Set(value As ObservableCollection(Of JsonTopology)) m_TopologyList = value NotifyPropertyChanged(NameOf(TopologyList)) End Set End Property #End Region ' Fields & Propeties #Region "CONSTRUCTOR" Sub New(sName As String, nPRC As Integer, nGRP As Integer) m_sName = sName m_nPrc = nPRC m_nGrp = nGRP End Sub Sub New(StrategyFeature As StrategyFeature) m_sName = StrategyFeature.sName m_nPrc = StrategyFeature.nPrc m_nGrp = StrategyFeature.nGrp For Each Topology In StrategyFeature.TopologyList m_TopologyList.Add(New JsonTopology(Topology)) Next End Sub #End Region ' Constructor End Class '----------- Classe che fa riferimento alle Topologie delle Feature del file Json ----------- Public Class JsonTopology Inherits VMBase #Region "FIELDS & PROPETIES" Private m_sName As String Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value NotifyPropertyChanged(NameOf(sName)) End Set End Property Private m_StrategyList As New ObservableCollection(Of JsonStrategy) Public Property StrategyList As ObservableCollection(Of JsonStrategy) Get Return m_StrategyList End Get Set(value As ObservableCollection(Of JsonStrategy)) m_StrategyList = value NotifyPropertyChanged(NameOf(StrategyList)) End Set End Property #End Region ' Fields & Propeties #Region "CONSTRUCTOR" Sub New(sName As String) m_sName = sName End Sub Sub New(Topology As Topology) m_sName = Topology.sName For Each Strategy In Topology.StrategyList m_StrategyList.Add(New JsonStrategy(Strategy)) Next End Sub #End Region ' Constructor End Class '----------- Classe che fa alle Strategie delle Topologie delle Feature del file Json ----------- Public Class JsonStrategy Inherits VMBase #Region "FIELDS & PROPETIES" Private m_sStrategyId As String Public Property sStrategyId As String Get Return m_sStrategyId End Get Set(value As String) m_sStrategyId = value NotifyPropertyChanged(NameOf(sStrategyId)) End Set End Property Private m_nIndexInList As Integer = -1 Public Property nIndexInList As Integer Get Return m_nIndexInList End Get Set(value As Integer) m_nIndexInList = value NotifyPropertyChanged(NameOf(nIndexInList)) End Set End Property Private m_ParameterList As New ObservableCollection(Of JsonStrategyParameter) Public Property ParameterList As ObservableCollection(Of JsonStrategyParameter) Get Return m_ParameterList End Get Set(value As ObservableCollection(Of JsonStrategyParameter)) m_ParameterList = value NotifyPropertyChanged(NameOf(ParameterList)) End Set End Property #End Region ' Fields & Propeties #Region "CONSTRUCTOR" Sub New(sStrategyId As String, nIndexInList As Integer) m_sStrategyId = sStrategyId m_nIndexInList = nIndexInList End Sub Sub New(Strategy As Strategy) m_sStrategyId = Strategy.sStrategyId m_nIndexInList = Strategy.nIndexInList For Each Parameter In Strategy.ParameterList m_ParameterList.Add(New JsonStrategyParameter(Parameter)) Next End Sub 'Friend Function Deserialize(StrategyIndex As Integer) As Strategy ' Dim Strategy As New Strategy() With {.sStrategyID = m_sStrategyID, ' .nIndexInList = StrategyIndex} ' ' Recupero file StrategyJson ' For Each Parameter In ParameterList ' Strategy.ParameterList.Add(Parameter.Deserialize()) ' Next ' Return Strategy 'End Function #End Region ' Constructor End Class '----------- Classe che fa riferimento ai parametri delle Strategie nel file Json ----------- Public Class JsonStrategyParameter Inherits VMBase #Region "FIELDS & PROPETIES" Private m_sName As String Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value NotifyPropertyChanged(NameOf(sName)) End Set End Property Private m_sNameNge As String Public Property sNameNge As String Get Return m_sNameNge End Get Set(value As String) m_sNameNge = value NotifyPropertyChanged(NameOf(sNameNge)) End Set End Property Private m_sValue As String Public Property sValue As String Get Return m_sValue End Get Set(value As String) m_sValue = value NotifyPropertyChanged(NameOf(sValue)) End Set End Property Private m_sType As String Public Property sType As String Get Return m_sType End Get Set(value As String) m_sType = value NotifyPropertyChanged(NameOf(sType)) End Set End Property Private m_sSubType As String Public Property sSubType As String Get Return m_sSubType End Get Set(value As String) m_sSubType = value NotifyPropertyChanged(NameOf(sSubType)) End Set End Property #End Region ' Fields & Propeties #Region "CONSTRUCTOR" Sub New(sName As String, sNameNge As String, sValue As String, sType As String, sSubType As String) m_sName = sName m_sNameNge = sNameNge m_sValue = sValue m_sType = sType m_sSubType = sSubType End Sub Sub New(StrategyParameter As StrategyParameter) m_sName = StrategyParameter.sName m_sNameNge = StrategyParameter.sNameNge m_sSubType = StrategyParameter.sSubType Select Case StrategyParameter.GetType() Case GetType(BooleanStrategyParameter) m_sValue = If(DirectCast(StrategyParameter, BooleanStrategyParameter).bValue, "true", "false") Case GetType(DoubleStrategyParameter) m_sValue = DirectCast(StrategyParameter, DoubleStrategyParameter).sValue Case GetType(ComboStrategyParameter) m_sValue = DirectCast(StrategyParameter, ComboStrategyParameter).SelValue.sValue Case GetType(StringStrategyParameter) m_sValue = DirectCast(StrategyParameter, StringStrategyParameter).sValue Case GetType(ListStrategyParameter) m_sValue = DirectCast(StrategyParameter, ListStrategyParameter).SelValue.sName End Select End Sub #End Region ' Constructor End Class