Для изменения размера нажмите или перетащите

Получение иерархии классификатора

Пример 1

Получение и проход по типовой структуре классификатора энергообъектов.

C#
// Поиск первого классификатора энергообъектов
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);
            }
        }
    }
}
Пример 2

Получение и проход по типовой структуре классификатора географических регионов.

C#
// Поиск первого географического классификатора
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);
            }
        }
    }
}
Пример 3

Рекурсивный проход по содержимому произвольного классификатора.

C#
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);
См. также