Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462

Избавиться от повторения вызова одного и того же метода с одним меняющимся параметром

15.02.2015, 16:22. Показов 782. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        struct Marker
        {
            public static string chipValue= '\"' + "Value" + '\"';
            public static string chipElementInfo = '\"' + "ElementInfo" + '\"';
            public static string chipDescription = '\"' + "Description" + '\"';
        }
 
        private void ParseCadStarNetList(List<string> netList)
        {
            foreach (string line in netList)
            {
                if (line.Contains(Marker.chipValue))
                    UpdateChipNameAndValue(ChipValues, line, Marker.chipValue);
                if (line.Contains(Marker.chipElementInfo))
                    UpdateChipNameAndValue(ChipValues, line, Marker.chipElementInfo);
                if (line.Contains(Marker.chipDescription))
                    UpdateChipNameAndValue(ChipValues, line, Marker.chipDescription);
            }
            ...........................................
Задача: избавиться от тупого повторения вызова одного и того же метода с одним меняющимся параметром. Дело в том, что структура Marker дальше буде расширяться. До каких пределов, пока сказать трудно, но уже щас это выглядит просто отвратительно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2015, 16:22
Ответы с готовыми решениями:

Ошибка вызова метода для блока с параметром
source_file.rb:18:in `&lt;main&gt;': undefined method `power' for main:Object (NoMethodError) #протоколирование def log s, someProc ...

Какова вероятность того, что за время 30 секунд, будет не менее одного вызова?
В течение часа коммутатор получает в среднем 40 вызовов. Какова вероятность того, что за время 30 секунд, будет не менее одного вызова?

Параллельный вызов одного и того же метода с разными входными данными
Здравствуйте уважаемые форумчане! Помогите решить такую задачу: есть метод, его необходимо вызвать параллельно из двух других методов, но с...

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 1
15.02.2015, 16:38
Злобный Зайц, например так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static string[] Markers = new[] {
    '\"' + "Value" + '\"',
    '\"' + "ElementInfo" + '\"',
    '\"' + "Description" + '\"'
};
 
private void ParseCadStarNetList(List<string> netList)
{
    foreach (string line in netList)
    {
        foreach (string marker in Markers)
        {
            if (line.Contains(marker))
            {
                UpdateChipNameAndValue(ChipValues, line, marker);
            }
        }
    }
}
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
15.02.2015, 16:44
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Как сделать более прилично?
для начала не создавать структур со статическими полями стрингов.
сделать класс с обычными открытыми свойствами трех этих полей.

если же это константы то нужно создать статический класс.

можно рефлексией пройтись по полям
или делать авто заполняемый шаблон в самой ide (это к псилону обращаться)

вот рефлексией

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private static void ParseCadStarNetList(List<string> netList)
        {
            foreach (string line in netList)
            {
                foreach (var field in typeof(Marker).GetFields())
                {
                    if(field.FieldType != typeof(String)) continue;
                    var value = (String)field.GetValue(null);
                    if (line.Contains(value))
                        UpdateChipNameAndValue(ChipValues, line, value);
                }
            }
        }
 
    public static class  Marker
    {
        public static string ChipValue = "\"Value\"";
        public static string ChipElementInfo = "\"ElementInfo\"";
        public static string ChipDescription = "\"Description\"";
    }
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
15.02.2015, 22:23
Злобный Зайц,
Также, как Metall_Version предложу рефлексию. Такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        struct Marker
        {
            public static string chipValue = '\"' + "Value" + '\"';
            public static string chipElementInfo = '\"' + "ElementInfo" + '\"';
            public static string chipDescription = '\"' + "Description" + '\"';
 
            public static List<string> ChipList()
            {
                List<string> list = new List<string>();
                foreach (var field in typeof(Marker).GetFields())
                    list .Add((String)field.GetValue(null));            
              return list;
            }           
        }
 
        private void ParseCadStarNetList(List<string> netList)
        {
            foreach (string line in netList)           
                foreach (string marker in Marker.ChipList())
                    if (line.Contains(marker))
                        UpdateChipNameAndValue(marker); 
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2015, 22:23
Помогаю со студенческими работами здесь

Как обратиться к методу из другого метода внутри одного и того же класса
Доброго времени суток. Продолжаю изучение C#, и вот моя третья тема (или четвертая, за сегодня) с вопросом. А не получается вот, что... ...

Рефлексия, загрузка одного и того же метода из разных dll файлов, через 1 интерфейс
Доброе время суток, у меня возник спорный вопрос, существует 3 проекта: 1) Программа сортировщик, которая должна сортировать массив,...

Как правильно описать метод внутри другого метода одного и того же класса?
Извияюсь за возможно глупый вопрос, но ООП тема для меня новая.Вот так выглядел метод класса в начале: public function...

Проверить возможность вызова метода из другого метода
Всем привет. Тут возникла мысля, что было бы здорово отследить все возможные вызовы метода Foo() из другого определенного метода...

Как передать входящее значение одного метода класса на возврат в другой метод того же класса?
Я самый новейший новичок. Помогите.Как передать входящее значение (количество еды) метода feed класса Cat на возврат(return) в метод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru