Size: a a a

2019 November 29

SB

Sergey Benzenko in CODE BLOG / C#
Gennady Kurbesov
если проверка в теле метода то получается. в метод нужно передать класс, реализующий необходимый метод
Так у вас этот метод где вообще?
источник

SB

Sergey Benzenko in CODE BLOG / C#
Gennady Kurbesov
если проверка в теле метода то получается. в метод нужно передать класс, реализующий необходимый метод
Если вы туда ничего не передаёте
источник

GK

Gennady Kurbesov in CODE BLOG / C#
Sergey Benzenko
Если вы туда ничего не передаёте
своего рода класс контейнер
источник

SB

Sergey Benzenko in CODE BLOG / C#
Gennady Kurbesov
своего рода класс контейнер
А пример вызова можете написать? Просто я не совсем понимаю, какой класс надо анализировать. В вашей сигнатуре получается, что все эти классы должны иметь GetData и проверять себя
источник

GK

Gennady Kurbesov in CODE BLOG / C#
Sergey Benzenko
А пример вызова можете написать? Просто я не совсем понимаю, какой класс надо анализировать. В вашей сигнатуре получается, что все эти классы должны иметь GetData и проверять себя
источник

SB

Sergey Benzenko in CODE BLOG / C#
Чот совсем не могу понять логики. Вариант фабричного метода что ли реализовать хотите? Но тогда надо конкретные классы передавать,
worker.GetData<Worker1>();

он не создаёт объекты, получая интерфейс
источник

SB

Sergey Benzenko in CODE BLOG / C#
Передаёте конкретный класс, а внутри GetData создаёте объект этого класса и смотрите, реализует он нужные интерфейсы или нет, если нет, тогда возвращаете null
источник

НП

Никита Петроченко... in CODE BLOG / C#
@gkurbesov  что ты вообще пишешь?
источник

V

Vladimir in CODE BLOG / C#
Чисто теоретически рефлексия может помочь проверить тип, который передан. Но я не уверен. И тоже не понимаю что происходит😄
источник

GK

Gennady Kurbesov in CODE BLOG / C#
Sergey Benzenko
Передаёте конкретный класс, а внутри GetData создаёте объект этого класса и смотрите, реализует он нужные интерфейсы или нет, если нет, тогда возвращаете null
конкретные классы будут закрыты
источник

GK

Gennady Kurbesov in CODE BLOG / C#
по этому я не могу их передавать
источник

НП

Никита Петроченко... in CODE BLOG / C#
а что ты в методе сделать то хочешь?
источник

НП

Никита Петроченко... in CODE BLOG / C#
ты в курсе что из твоего метода не Worker1 не Worker2 не может быть возвращен из return?
источник

GK

Gennady Kurbesov in CODE BLOG / C#
Никита Петроченко
а что ты в методе сделать то хочешь?
нужно, что бы метод вернул объект, который реализует функционал указанного интерфейса (если такой был создан при инициализации) либо null
источник

GK

Gennady Kurbesov in CODE BLOG / C#
я уже сделал проще
источник

SB

Sergey Benzenko in CODE BLOG / C#
Gennady Kurbesov
конкретные классы будут закрыты
Тогда передавайте
worker.GetData(typeof(Interface1));

и в GetData проверяйте по входной строке, что это за интерфейс и возвращайте нужный объект
источник

НП

Никита Петроченко... in CODE BLOG / C#
Gennady Kurbesov
нужно, что бы метод вернул объект, который реализует функционал указанного интерфейса (если такой был создан при инициализации) либо null
Сори за грубость, но может тебе сначала азы c# поднянуть?
источник

GK

Gennady Kurbesov in CODE BLOG / C#
Никита Петроченко
Сори за грубость, но может тебе сначала азы c# поднянуть?
очень грубо, чувак
источник

НП

Никита Петроченко... in CODE BLOG / C#
Sergey Benzenko
Тогда передавайте
worker.GetData(typeof(Interface1));

и в GetData проверяйте по входной строке, что это за интерфейс и возвращайте нужный объект
не, он хочет другое. Если в метод засунуть первый интерфейс, то вернуть класс который реализует первый интерфейс.
Если засунуть второй интерфейс, то вернуть другой класс который реализует воторой интерфейс.
Чувствуешь подвох?
источник

GK

Gennady Kurbesov in CODE BLOG / C#
Никита Петроченко
не, он хочет другое. Если в метод засунуть первый интерфейс, то вернуть класс который реализует первый интерфейс.
Если засунуть второй интерфейс, то вернуть другой класс который реализует воторой интерфейс.
Чувствуешь подвох?
Все верно
источник