Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/187: Рейтинг темы: голосов - 187, средняя оценка - 4.72
-1 / 3 / 0
Регистрация: 11.01.2012
Сообщений: 267

Пример использования интерфейсов разными классами

01.02.2012, 17:06. Показов 38617. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
скиньте сабж кому не трудно.или лучше ссылку на статью. весь гугль перерыл не нашел. Нашел только использование одним классом разных интерфейсов. даже на мсдн нету....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2012, 17:06
Ответы с готовыми решениями:

Приведите пример использования интерфейсов
Любую задачу с интерфейсами, по моему мнению, гораздо проще решать используя статические классы или методы. Копирование классов решается...

Нужен пример использования интерфейсов и делегатов в одной программе
Нужно найти пример использования интерфейсов и делегатов в одно программе, так, чтобы это имело смысл. Желательно не сложно.

Смысл использования интерфейсов
Добрый вечер. Дошел в самоучителе до главы про интерфейсы и в целом мне понятен синтаксис, но я не уверен, что конца понимаю суть...

43
-1 / 3 / 0
Регистрация: 11.01.2012
Сообщений: 267
21.11.2012, 14:09  [ТС]
Студворк — интернет-сервис помощи студентам
kolorotur можно определять тип класса и на этом основании приводить к нужному классу и вызывать этот метод, либо раз уж работаем с object никто не запретит использовать dynamic, но как и я говорил это не есть красиво.

Дабы было понятно всем.

C#
1
2
3
4
5
6
7
8
if(myList[5] is c1)
{
    (myList[5] as c1).doit();
}
if(myList[5] is c2)
{
    (myList[5] as c2).doit();
}
либо
C#
1
    (myList[5] as dynamic).doit();
По поводу наследования я и написал в сегодняшнем посте, что это относится к стандартным классам больше.

Я лично интерфейсы стараюсь не использовать, везде делаю наследование где могу. Дабы избежать копирования кода.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.11.2012, 14:52
Цитата Сообщение от 444866 Посмотреть сообщение
можно определять тип класса и на этом основании приводить к нужному классу и вызывать этот метод
Можно.
Но при добавлении нового класса в иерархию придется лопатить весь код и добавлять еще одну проверку.
То есть для реального проекта это тупиковый путь.
dynamic - это очень сильный оверкилл для такой задачи. Про проверку типов на стадии компиляции даже говорить не буду.

Цитата Сообщение от 444866 Посмотреть сообщение
По поводу наследования я и написал в сегодняшнем посте, что это относится к стандартным классам больше.
Не видел такого. Возможно, пост был отредактирован позже и я не успел увидеть изначальную фразу.

Цитата Сообщение от 444866 Посмотреть сообщение
Я лично интерфейсы стараюсь не использовать, везде делаю наследование где могу. Дабы избежать копирования кода.
Так никто же и не говорит, что надо везде интерфейсы использовать
Где-то лучше интерфейс, где-то - абстрактный класс. Если класс должен предоставлять функционал, то интерфейс, если класс описывает некую сущность с (возможно) дефолтной реализацией, то конечно абстракция.
Кстати, не понял момент с копированием кода при использовании интерфейсов. О каком копировании идет речь?
Если вы об объявлении метода в каждом классе, реализующем интерфейс, то с абстрактными классами будет тот же override, а если переопределять не нужно, то и интерфейс цеплять не придется.
0
-1 / 3 / 0
Регистрация: 11.01.2012
Сообщений: 267
21.11.2012, 19:18  [ТС]
Можно.
Но при добавлении нового класса в иерархию придется лопатить весь код и добавлять еще одну проверку.
То есть для реального проекта это тупиковый путь.
dynamic - это очень сильный оверкилл для такой задачи. Про проверку типов на стадии компиляции даже говорить не буду.
А я и писал, что это некрасивое решение.

Кстати, не понял момент с копированием кода при использовании интерфейсов. О каком копировании идет речь?
если нужно сделать общей более чем одну функцию или свойство и тд, то скорее всего будут одинаковые участки кода в разных классах с этим интерфейсом. И сие есть копипаста, которая лечится абстрактым классом с общей дефолтной реализацией.

Если есть необходимость юзать интерфейсы и есть возможность создания или редактирования класса предка, то необходимо юзать наследование.

А если классы стандартные либо слишком сложная структура интерфейсов, например наследование от нескольких интерфейсов, то тут выхода нет, только интерфейсы и юзать. Интерфейсы созданы, дабы заменить множественное наследование, а раз его нету, то и интерфейсы не нужны.
0
0 / 0 / 0
Регистрация: 13.08.2012
Сообщений: 8
14.02.2017, 15:27
444866, Спасибо твоей теме!

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
public interface ILogger
{
    void Log(string logText);
}
     
public class Logger : ILogger
{
    public void Log(string logText)
    {
        // сохранить лог в файле
    }
}
    
public class DatabaseLogger : ILogger
{
    public void Log(string logText)
    {
        // сохранить лог в базе данных
    }
}
     
public class SmtpMailer
{
    private readonly ILogger logger;
     
    public SmtpMailer(ILogger logger)
    {
        this.logger = logger;
    }
    
    public void SendMessage(string message)
    {
        // отсылка сообщения
        logger.Log(string.Format("Отправлено '{0}'", message));
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2017, 15:27

Библиотеки интерфейсов для использования с FASM
Приветствую! Люди, поделитесь знанием - какие DLL используете под ассемблер. В частности очень интересуют библиотеки интерфейсов работающие...

Объединение двух List с разными классами
Здравствуйте уважаемые форумчане. Вопрос следующий: Имеются 2 List с разными классами: List<A> a; List<B> b; Можно ли...

Передача Bitmap между разными классами
У меня есть класс static class Global и второй класс, наследник формы. Мне надо в Global хранить изображения. Их будут записывать туда...

Множественное наследование интерфейсов - нужен пример
Наведите плиз пример кода множественного наследования интерфейсов?

Как организовать отрисовку разных объектов разными классами?
Начинаю писать программу для отрисовки объектов в разных программах (но пока в одной). Уточню назначение программы: пользователь задаёт...


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

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Задача: Программно добавить префикс в нумерацию документов в самописной конфигурации на БСП (помощь начинающему коллеге). Решение: В модуле объекта документа размещен следующий код: Процедура. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru