Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 19

Вывод обобщенного класа

24.05.2011, 17:18. Показов 1166. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, не бейте сильно, если вопрос тупой или сто раз обсуждался, но нужна помощь.
В общем, по заданию есть такая конкретная ситуация:
Обычная учебная задачка, есть класс самолетов, класс автобусов, наследующие самосозданный интерфейс Транспорт, надо с помощью генерика вывести список рейсов в datagridview.
Буквально задание звучит так:
"Создать класс-прототип для хранения и обработки экземпляров классов, наложить ограничение на параметр типа данных: тип-аргумент должен реализовывать интерфейс Транспорт
...
Формирование и вывод списка авиарейсов до Лондона (использовать стандартную коллекцию ArrayList)"
Вот основная процедура:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog textopen = new OpenFileDialog();
            textopen.DefaultExt = "txt";
            if (textopen.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                FileStream openstream = new FileStream(textopen.FileName, FileMode.Open);
                Encoding enc = Encoding.GetEncoding(1251);
                StreamReader sreader = new StreamReader(openstream, enc);
                tcView.Visible = true;
                rtbRuns.Text = sreader.ReadToEnd();
                sreader.Close();
            }
            Regex rdata = new Regex(@"\b([а-я]+)\s(\d{3})\s([А-Яа-я]+)\s([А-Яа-я]+)\s((\d+\s*){2,4})(\s|$)");
            MatchCollection founded = rdata.Matches(rtbRuns.Text);
            restable = new ArrayList();
            if (founded.Count>0)
            {
            foreach (Match match in founded){
 
                if (match.Groups[1].Value == "лайнер")
                {
                    restable.Add(new TransProtoType<Plane>(new Plane(match.Groups[1].Value, match.Groups[2].Value,
                     match.Groups[3].Value + "-" + match.Groups[4].Value, match.Groups[5].Value)));
                }
                else
                {
                    restable.Add(new TransProtoType<Bus>(new Bus(match.Groups[1].Value, match.Groups[2].Value,
                        match.Groups[3].Value, match.Groups[4].Value, match.Groups[5].Value)));
                }
                
            }
            dgvRuns.AutoGenerateColumns = true;
            // Set up the data source.
            dgvRuns.DataSource = restable;
            // Automatically resize the visible rows.
            dgvRuns.AutoSizeRowsMode =DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
            // Set the DataGridView control's border.
            dgvRuns.BorderStyle = BorderStyle.Fixed3D;
            }
Здесь регэкспами из текста извлекаются рейсы, создаются экземпляры обобщенного класса, которым передается нужный тип и выводится в грид. В том то и дело, что ничего не выводится.

Созданный интерфейс (ничего интересного):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface iTransport
    {   double this[int inttickets]
        {  get;
            set;}
        string startingpoint
        {  get;
            set;}
        string destination
        {   get;
            set;}
        string vehicle
        {get;
          set;}
        void timetableoutput();
    }
Генерик:
C#
1
2
3
4
5
6
7
class TransProtoType<PT> where PT : iTransport
    {
        private PT inner;
 
        public TransProtoType(PT item)
        { inner = item; }
    }
Если вывожу через класс-обертку, то все выводится в штатном режиме, текст обертки не привожу - там ничего интересного, все поля - public.
Текст классов автобус и самолет тоже не привожу, но там тоже все выводимые поля - public.
Как можно их вывести, почему грид не подхватывает их автоматом? Ведь генерику тип исправно передается, в отладчике смотрю - ArrayList коллекция restable создается и правильно заполняется.
Есть мысли?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2011, 17:18
Ответы с готовыми решениями:

Эксперты обобщенного программирования
Прошу подсказать в чем тут ошибка ? Вот часть когда куда указывают ошибки: template &lt; class ArrayList&lt;T&gt;&gt; class Iterator ...

Коллекция их обобщенного класса
&quot;Создать коллекцию, представляющую собой обобщенный класс, ограниченный только объектами-наследниками класса FileStream&quot; ...

Создание обобщенного метода
Доброго времени суток. Всех с прошедшими праздниками :) Новый Год начался со старых проблем. В общем, как говорится, есть у меня один...

4
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 19
06.06.2011, 11:10  [ТС]
Проблема решилась заменой arraylist на List<iTransport> и наследованием генерика от List<iTransport>, грид теперь не плюется Но остался вопрос с выводом билетов, они по-прежнему заносятся криво, в отладчике видно что корректно заполнены массивы только объектов типа Bus, а Plane - ни в какую. При попытке посмотреть поле inner в отладчике в объектах plane отладчик по-прежнему вылетает, а перед этим показывает странную картину
такую
Есть мысли какие? И как правильно вывести массив билетов в грид подскажите, плиз.
0
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 19
16.06.2011, 16:05  [ТС]
Актуально!!!
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.06.2011, 19:02
Цитата Сообщение от dezmond06 Посмотреть сообщение
Актуально!!!
Только вот картинка твоя больше не отображается. Включи в сообщение (в расширенном режиме).
0
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 19
17.06.2011, 09:26  [ТС]
Вот, выкладываю еще раз.
Миниатюры
Вывод обобщенного класа  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2011, 09:26
Помогаю со студенческими работами здесь

Реализация обобщенного алгоритма
Люди, помогите, пожалуйста. Нужно реализовать обобщенный алгоритм, который ищет в диапазоне источника последнюю подпоследовательность,...

Реализация обобщенного интерфейса
uses System; type ICloneableAs&lt;T&gt; = interface(ICloneable) function CloneAs(): T; end; type T1 =...

Пример обобщенного конструктора
В учебнике при разъяснении темы про обобщенные конструкторы приведен такой пример: class Summation { private int sum; &lt;T...

Сравнение экземпляров обобщённого типа
Есть класс class MyClass&lt;T&gt; { T val; ... } Каким образом можно сделать сравнение типа if (obj1.val &gt; obj2.val) {...

Конструктор для обобщенного массива
public class Generic&lt;T&gt; { private T mass; public Generic() { T mass = (T) new Object ; } } Помогите пожалуйста...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru