Си диез / Говнокод #19476 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
public void CopyToListControl(ListControl ListControlElement, List<string> v)
        {
            if (ListControlElement is ComboBox)
            {
                ((ComboBox)ListControlElement).Items.Clear();
                for (int i = 0; i < v.Count; i++) ((ComboBox)ListControlElement).Items.Add(v);
            }
            if (ListControlElement is ListBox)
            {
                ((ListBox)ListControlElement).Items.Clear();
                for (int i = 0; i < v.Count; i++) ((ListBox)ListControlElement).Items.Add(v);
            }
            if (ListControlElement is CheckedListBox)
            {
                ((CheckedListBox)ListControlElement).Items.Clear();
                for (int i = 0; i < v.Count; i++) ((CheckedListBox)ListControlElement).Items.Add(v);
            }
        }

Функция нового класса для подключения к форме. На форме может быть любой из 3 списочных элементов. Подводим к общему классу ListControl
Но так писать нельзя:
public void CopyToListControl(ListControl ListControlElement, List<string> v)
{
ListControlElement.Items.Clear();
for (int i = 0; i < v.Count; i++) ListControlElement.Items.Add(v);
}

а дальше в коде будет несколько методов по тому же принципу, по 3 if в каждой функции (бла-бла-бла is бла-бла-бла)
+ ещё приведение типа каждый раз

Запостил: sbs sbs, (Updated )

Комментарии (9) RSS

  • var items = ListControlElement.GetType().GetProperty("Items").GetValue(ListControlElement);
    items.Clear();

    А еще у вас добавление элементов ВИЧ-положительно
    Ответить
    • Работает, правда, в FW 4.0+. В 3.5 уже нельзя.
      А так же при using Microsoft.CSharp
      Спасибо!
      Ответить
    • Слишком мудрено. Рефлексия рулит.

      Вообще какая-то ебота с архитектурой windows form
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8