private void StateDataSetsShouldBeUnique()
 {
     if (StateDataSets.Distinct().Count() != StateDataSets.Count)
     {
         throw new ConfigurationException("Configuration contains duplicate state datasets.\n");
     }
 }
        private void StateDataSetsShouldBeReferenced()
        {
            var unreferencedStateDataSets = StateDataSets
                                            .Where(stateDataSetName => !ConnectedSystems.Any(cs => cs.EnabledDatasets.Any(ds => ds.StateDataSetName == stateDataSetName)))
                                            .ToList();

            if (unreferencedStateDataSets.Count > 0)
            {
                throw new ConfigurationException($"There are unreferenced State DataSets: {string.Join(", ", unreferencedStateDataSets)}.\n");
            }
        }
 private void AllConnectedSystemsShouldReferenceAnExistingStateDataSet()
 {
     foreach (var connectedSystem in ConnectedSystems)
     {
         foreach (var connectedSystemDataSet in connectedSystem.Datasets)
         {
             if (!StateDataSets.Contains(connectedSystemDataSet.StateDataSetName))
             {
                 throw new ConfigurationException($"ConnectedSystem {connectedSystem.Name}' DataSet '{connectedSystemDataSet.Name}' references non-existent StateDataSet {connectedSystemDataSet.StateDataSetName}.");
             }
         }
     }
 }