Припустим, у меня есть интерфейс с методом A. Я создаю два дочерних к нему интерфейса, один имеет метод B, второй - метод C. После чего создаю класс, реализующий оба дочерних интерфейса, и объявляю там методы A, B и C. Не возникнет ли проблем с реализацией метода А? Чаще всего насчет ситуаций с одинаковыми именами методов в интерфейсах предлагают отдельную реализацию. Мне, к примеру, нужно, чтобы там выполнялось только одно действие. Или стоит вынести метод A в отдельный интерфейс?

Принятый ответ

реализован в классе.
Скользкое понятие.
В любом случае, даже если дочерний интерфейс переобъявит метод A() вот так:
interface iB
{ new void A(); void B(); }
и твой класс Class_Example реализует его, у тебя будут выполнятся одни и те же действия
  1. И в случае iB b = new Class_Example(); b.A()
  2. И в случае iA a = new Class_Example(); a.A();
  3. И в случае Class_Example class_name = new Class_Example(); class_name.A().
В случае, когда интерфейс не переобъявляет метод A() даже говорить не приходиться - тем более будут те же действия.
Вообще здесь такая штука, по моему мнению конкретно в этом случае надо разбираться по факту проблемы, а не по возможной проблеме.
P.S.
Насчет интерфейсов "Полный справочник по C#" , стр 320.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
29
9 лет назад
3
Вы че прикалываетесь? MyClass1 это буллщит полный, такого не должно быть имхо, никому не советую такое нигде использовать, почему вообще такое можно писать - большой вопрос
0
24
9 лет назад
0
почему вообще такое можно писать
Это же шарпы, если не ошибаюсь, там и не такое бывает.
0
27
9 лет назад
Отредактирован Devion
0
Doc, булщит - да. Не стоит такого делать - да.
Вероятно, эта функция предусмотрена на случаи, когда разные интерфейсы разных библиотек просят реализовать метод с одинаковым названием. Модульный подход предусматривает автономные, несвязанные между собой вещи и это как бы намекает, что такие ситуации имеют место быть. В таких случаях такое решение лучше чем его отсутствие.
Это примерно та же история, что и с пространствами имен - там есть вероятность совпадения имен классов, тут есть вероятность совпадения имен методов. Только решается разными способами, а причины общие - избежать двоякости.
Кстати интересно как такая конструкция поведет себя под рефлексией - что там покажет. И попробовать, откроется ли под дерефлектором этот код.
0
24
9 лет назад
Отредактирован prog
0
Extravert, в такой ситуации, как по мне, лучше во враппер завернуть, чем ломиться в лоб.
0
29
9 лет назад
0
Extravert, откроется, иначе бы это и не работало вовсе)
1
9
9 лет назад
1
Знаешь, что самое забавное ? XD
Тот пример, который ты привел, и есть причина, почему в C# сделали множественное наследование интерфейсов и одиночное классов)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.