Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108

Наследование интерфейса без реализации дочерних методов

25.04.2017, 09:28. Показов 3905. Ответов 5

Студворк — интернет-сервис помощи студентам
Имеется интерфейс вида:
C#
1
2
3
4
5
6
7
8
    public interface IRepository<T> where T: class
    {
        T GetById(int id);
        List<T> GetAll();
        void Add(T element);
        void Remove(int id);
        void Update(T element);
    }
От него наследуется класс:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public class ColorRepository: IRepository<Color>
    {
        DataContext db;
 
        public ColorRepository()
        {
            this.db = new DataContext();
        }
 
        public List<Color> GetAll()
        {
            List<Color> allColors = db.Set<Color>().ToList();
 
            return allColors;
        }
 
        public Color GetById (int id)
        {
            var color = db.Colors.Find(id);
 
            return color;
        }
    }
И тут возникла проблема, методы Update, Remove и Add тут реализовывать не надо. Подскажите, как поступить.
Заранее большое спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2017, 09:28
Ответы с готовыми решениями:

Проблема реализации методов интерфейса
Совсем недавно добралась до этой темы, так что пытаюсь освоить. Есть два класса : book и studentbook, где studentbook - дочерний класс от...

Правило для реализации методов интерфейса
У меня есть интерфейс IEntity. Его реализовуют все сущности с которыми я в будущем буду оперировать: public class UserEntity: IEntity ...

Наследование интерфейса и наследование реализации
Начал читать книгу GoF и сразу же в предисловии попал в тупик. Чем отличается наследование интерфейса от наследования реализации? Что такое...

5
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
25.04.2017, 09:36
Цитата Сообщение от BboyBlackjack Посмотреть сообщение
методы Update, Remove и Add тут реализовывать не надо
Ну вообще-то надо. Реализация интерфейса подразумевает именно реализацию всех его методов. Иначе зачем такой интерфейс?
Если же вам нужно отложить реализацию для дочерних классов, то сделайте класс ColorRepository абстрактным, тогда эти методы можно оставить без реализации.

И да, неправильно говорить "Наследование интерфейса", правильно "Реализация интерфейса".
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
25.04.2017, 10:05  [ТС]
Вообще-то не надо! Про обязательность я не спорю, знаю это прекрасно сам, но в моем случае они не нужны в этом классе, нужно что-то вроде заплаток сделать, не знаю как. Сразу скажу, что репозиториев много, в некоторых нужно реализовывать все методы, в некоторых нет
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
25.04.2017, 10:12
Лучший ответ Сообщение было отмечено BboyBlackjack как решение

Решение

Цитата Сообщение от BboyBlackjack Посмотреть сообщение
нужно что-то вроде заплаток сделать, не знаю как.
ну так и сделай
C#
1
public void Remove(int id){};
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.04.2017, 10:15
Цитата Сообщение от BboyBlackjack Посмотреть сообщение
методы Update, Remove и Add тут реализовывать не надо.
Реализуйте методы и пусть они бросают NotSupportedException.
1
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
25.04.2017, 10:19
BboyBlackjack, можно ещё объявить не один интерфейс, а несколько, например:
C#
1
2
3
4
5
6
7
8
9
    public interface IRepositoryRemovable<T> where T: class
    {
        void Remove(int id);
    }
 
    public interface IRepositoryUpdatable<T> where T: class
    {
        void Update(T element);
    }
В отличие от наследования от классов можно реализовывать несколько интерфейсов.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2017, 10:19
Помогаю со студенческими работами здесь

Чем отличается наследование реализации от наследования интерфейса?
Чем отличается наследование реализации от наследования интерфейса?

Использование интерфейса без реализации
Добрый день. Подскажите, корректно ли использовать интерфейс не содержащий реализации для, скажем так, пометки класса, для последующей...

Отделение интерфейса от реализации класса: компиляция кода реализации
Доброго времени суток, У меня возникла проблема с отделением интерфейса от реализации класса. Допустим, у меня есть три файла: 1....

Использование полей и методов в дочерних классах
Возникла проблема class Subj { public: char name; char prepod; int hours; bool exam; bool credit;

Вызов дочерних методов из абстрактного базового. И добавление в коллекцию
Доброго времени суток! Есть абстрактный класс А Есть несколько классов С =&gt; (С1, С2 ... Сn), все наследуются от А. Во многих...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru