C# полиморфизм

Статус: Offline
Реєстрація: 27.11.2008
Повідом.: 87
C# полиморфизм

Помогите решить следующий вопрос:
Мне бы хотелось в абстрактном базовом классе обьявить абстрактную функцию которая принимает один аргумент и возвращает void, но в производных классах этот аргумент предпологаеться различным. Возможно нужно реализовать все через object, но может есть другие варианты? Чтото типа шаблонной функции?
Эту функцию в последствии предпологаю вызывать в цикле по массиву ссылок на базовый класс.
 
И где тут полиморфизм, если у функций будут разные сигнатуры?
 
сами себе придумали геморрой со статической типизацией и сами им и страдают.
да произведите все, что она будет возвращать от другого базового класса и не мучайтесь.
 
сами себе придумали геморрой со статической типизацией и сами им и страдают.
да произведите все, что она будет возвращать от другого базового класса и не мучайтесь.

typecast решает проблему с выстрелом в ногу.

ЗЫ. В смысле, дает такую возможность. :)
 
и зачем тогда типы...

fp1.jpg


но в производных классах этот аргумент предпологаеться различным

Тип агрумента предполагается различным? Не верю что так будет лучше. Как насчет отказаться от этой затеи, и сделать по-человечески?
 
Останнє редагування:
И где тут полиморфизм, если у функций будут разные сигнатуры?

:) Я не так выразелся. В теле функция будет приводить object к нужному объекту, но я бы хотел узнать может есть еще другие способы?
 
Еще есть интерфейсы...
 
А перегруженные методы не подходят для этих целей?
 
Если уж совсем никак, то я бы посмотрел в сторону универсального метода.
 
Мне бы хотелось в абстрактном базовом классе обьявить абстрактную функцию которая принимает один аргумент и возвращает void, но в производных классах этот аргумент предпологаеться различным.
скажи что за аргумент, насколько различный и зачем оно вообще надо?

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

Ну интерфей в данном случае аналогичен абстрактному классу.

Supostat; сказав(ла):
А перегруженные методы не подходят для этих целей?

Вроде нет, полиморфизма неполучиться.

eyeland; сказав(ла):
Если уж совсем никак, то я бы посмотрел в сторону универсального метода.

Это как?
 
скажи что за аргумент, насколько различный и зачем оно вообще надо?

можно принимать базовый класс или интерфейс. если аргумент совсем "разный", то шаблоном
а скорее всего это решается без лишних абстрактных.

Планирую сделать форму в каторой буду задавать структуру посылки получаемой из инета. В эту структуру будут входить различные классы в осне которых данные (int, double, short, DataTime и.т.д). В форме задаються различные значения в частности максимально и минимально допустимые значения. Т.К. структуру телеграммы до этапа компиляции я не знаю то без полиморфизма не обойтись.

Я планирую сделать функцию:

void SetValue( object value);

и вызывать ее в цикле.

Может есть в полиморфизме какойто способ отличный от выше приведенного.
 
fp1.jpg




Тип агрумента предполагается различным? Не верю что так будет лучше. Как насчет отказаться от этой затеи, и сделать по-человечески?

На деньги намекаете ?А что секонд хенд уже не принимается во внимание ?
 
Планирую сделать форму в каторой буду задавать структуру посылки получаемой из инета. В эту структуру будут входить различные классы в осне которых данные (int, double, short, DataTime и.т.д). В форме задаються различные значения в частности максимально и минимально допустимые значения. Т.К. структуру телеграммы до этапа компиляции я не знаю то без полиморфизма не обойтись
слабо понял что ты имеешь в виду.

сделай класс "Посылка" с полями нужными
и функцию void SetValue( Посылка value);

где ты не знаешь структуру телеграммы не понятно.

Если у тебя будет метод СетВалюэ работать со структурами, то делай через шаблоны, однозначно
 
Я смотрю страдаете от проблем не только с изложением но и с восприятием.

Это смотря по какому пути начнете двигаться в лабиринте к исходному полю семени.
Если рассматривать в первоначальном строении обьект(разветление) как часть продолженная в пути ,то правильно идете,если же выбор маршрута сделал другой,не посыпавший семена в цели,то вы отчасти правы.
 
Это смотря по какому пути начнете двигаться в лабиринте к исходному полю семени.
Если рассматривать в первоначальном строении обьект(разветление) как часть продолженная в пути ,то правильно идете,если же выбор маршрута сделал другой,не посыпавший семена в цели,то вы отчасти правы.

75Oa6591MQ4
 
Назад
Зверху Знизу