![]() | Получение иерархии классификатора |
Получение и проход по типовой структуре классификатора энергообъектов.
// Поиск первого классификатора энергообъектов var classifier = ClassifierOfMeterPointsByEnergyEntities.GetInstances().FirstOrDefault(); if (classifier == null) Console.WriteLine("Классификатор энергообъектов не обнаружен"); else { // Вывод всех сетей foreach(var network in classifier.AttributeGroupsOfEnergyManagementItem.GetValues() .OfType<CustomElectricalNetworks>()) { Console.WriteLine(network.Caption); // Вывод уровней напряжения foreach(var voltageGroup in network.AttributeVoltageGroups.GetValues()) { Console.WriteLine("--" + voltageGroup.Caption); // Вывод ПС/ТП каждой группы напряжения foreach(var substation in voltageGroup.AttributeSubstations.GetValues()) { Console.WriteLine("----" + substation.Caption); } } } }
Получение и проход по типовой структуре классификатора географических регионов.
// Поиск первого географического классификатора var classifier = ClassifierOfMeterPointsByGeoLocation.GetInstances().FirstOrDefault(); if (classifier == null) Console.WriteLine("Географический классификатор не обнаружен"); else { // Уровень населенных пунктов foreach(var city in classifier.AttributeGeographicAreas.GetValues() .OfType<CenterOfPopulation>()) { Console.WriteLine(city.Caption); // Уровень улиц foreach(var street in city.AttributeStreets.GetValues()) { Console.WriteLine(street.Caption); // Уровеь строений (обобщенно) foreach(var building in street.AttributeBuildings.GetValues()) { Console.WriteLine(building.Caption); } } } }
Рекурсивный проход по содержимому произвольного классификатора.
static void PrintLower(CustomClassifierNode node, string prefix) { Console.WriteLine(prefix + node.AttributeCaption); foreach(var subNode in node.GetLowerItems()) PrintLower(subNode, prefix + "--"); } … var classifier = Classifier.GetInstances().First(); PrintLower(classifier, string.Empty);