Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
22 / 22 / 6
Регистрация: 24.03.2013
Сообщений: 119

Передать в функцию список объектов наследников вместо предка

01.05.2017, 22:30. Показов 1299. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть класс предок Entity, у него 4 наследника Artist, Picture, MuseumCollection, Shop.
Есть функция isExist:
C#
1
2
3
4
5
6
7
8
9
10
11
12
 bool isExist(Entity entity, List<Entity> ObjectList)
        {
 
            foreach (Entity ent in ObjectList)
            {
                if (ent.Equals(entity)) return true;
 
            }
            return false;
 
 
        }
Вопрос, как сделать так, чтобы в эту функцию можно было передать список типа Artist, Picture, MuseumCollection или Shop.
Неужели копировать эту функцию 4 раза для разных типов списка?
Вот полный код:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PaintingHandBook.BL
{
 
    public class Entity: IEquatable<Entity>
    {
        public string Name;
 
        public Entity(string Name)
        {
            this.Name = Name;
 
 
        }
        public bool Equals(Entity obj)
        {
            return this.Name.Equals(obj.Name);
 
        }
 
 
    }
    public class Picture:Entity
    {
 
        public Artist artist;
        private DateTime date;
        public string Genre;
       
 
        public Picture(string Name,Artist artist, DateTime date, string Genre):base(Name)
        {
            this.artist = artist;
            this.date = date;
            this.Genre = Genre;
 
 
        }
    }
    public class Artist:Entity
    {
        public List<Picture> pictures;
        public List<string> styles;
        public Artist(string Name, List<Picture> pictures, List<string> styles):base(Name)
        {
            this.pictures = pictures;
            this.styles = styles;
        }
    }
 
    public class MuseumCollection:Entity
    {
 
        public List<Picture> Pictures;
        public List<bool> isOriginalByKey;
        public MuseumCollection(string Name, List<Picture> Pictures, List<bool> isOriginalByKey):base(Name)
        {
            this.Pictures = Pictures;
            this.isOriginalByKey = isOriginalByKey;
 
        }
    }
    public class Shop:Entity
      {
 
        public DateTime Date;
        public List<Picture> Pictures;
        public List<double> PriceByKey;
        public Shop(string Name,DateTime date,List<Picture> pictures, List<double> priceByKey):base(Name)
        {
            this.Date = date;
            this.Pictures = pictures;
            this.PriceByKey = priceByKey;
 
 
 
        }
    }
    public class phbModel
    {
        private List<Artist> allArtists;
        private List<Picture> allPictures;
        private List<MuseumCollection> allMuseumCollections;
        private List<Shop> allShops;
 
        public static bool isExist(Entity entity, List<Entity> ObjectList)
        {
 
            foreach (Entity ent in ObjectList)
            {
                if (ent.Equals(entity)) return true;
 
            }
            return false;
 
 
        }
        public void AddArtist(string Name)
        {
            allArtists.Add(new Artist(Name,new List<Picture>(), new List<string>()));
 
        }
 
        public void AddPicture(string Name, Artist artist, DateTime date, string Genre)
        {
            allPictures.Add(new Picture(Name, artist, date, Genre));
            allPictures[allPictures.Count - 1].artist = artist;
 
        }
 
 
 
 
    }
 
 
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2017, 22:30
Ответы с готовыми решениями:

Как вместо параметра передать функцию
Задача такая: есть метод оптимизации: public double OptMesod(double X) { ... } есть целевая функция, которая используется в...

Массив объектов от одного предка
Есть три различных прибора с различными реализациями протоколов. Есть общий класс-предок TDevice, у которого объявлены основные методы по...

Передать вектор объектов в дружественную функцию
Я думаю передать вот так, но почему-то синтаксическая ошибка. filtr_tup(vector&lt;OC&gt;); #ifndef OC_H #define OC_H #include...

2
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
01.05.2017, 22:50
C#
1
2
3
4
5
6
7
8
9
        public static bool isExist<T>(T entity, List<T> ObjectList) where T: IEquatable<Entity>
        {
            foreach (IEquatable<T> ent in ObjectList)
            {
                if (ent.Equals(entity)) return true;
 
            }
            return false;
        }
1
22 / 22 / 6
Регистрация: 24.03.2013
Сообщений: 119
01.05.2017, 22:59  [ТС]
Someone007, Спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.05.2017, 22:59
Помогаю со студенческими работами здесь

Корректное удаление объектов-наследников
Всем доброго времени суток! Есть 2 класса: type tA = class fieldOfA : Integer; public constructor Create(); procedure...

Как правильно передать массив объектов пользовательского типа в функцию?
Доброго всем, пишу впервые пишу огромную программу - игру и столкнулся с проблемой, которую так сам и не могу решить. Нужно передать массив...

Как в стандартную функцию WinAPI передать тип данных std::string вместо char*?
Помогите пожалуйста. Мне надо в GetDlgItemText передать std::string. Как это можно сделать? Вижуалка говорит, что нельзя преобразовать...

Как создать массив из объектов разных классов, имеющих общего предка?
Есть основной класc 'Автомобиль' его наследуют 3 класса: мини вен, купе и седан. Как создать массив объектов класса 'автомобиль' что бы...

Как передать список в функцию
Здравствуйте , подскажите как передать в функцию-шаблон список , выдает ошибку Ошибка C2061 синтаксическая ошибка: идентификатор...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru