Ви використовуєте застарілий браузер. Цей та інші сайти можуть відображатися в ньому некоректно. Необхідно оновити браузер або спробувати використовувати https://www.google.com/chrome/
Если даже Вы не знаете какие типы у вас сидят в телеграмме, то С ЧЕМ вы собираетесь работать??? Вы городите бред, не удивительно что с Вас уже прикалываются!
Извините, а кто за Вас должен решать? Или Вы, может быть, думаете что получив любую пачку байт, компьютер произнесёт магическое заклинание "сим-салябим-полиморфизм!!!", и распихает эти байты по переменным разных типов, основываясь на.... чём ???
Давайте уточним:
какого типа readBuff и что там вообще?
как происходит процесс наполнения structTelegram? на основании чего выбирается экземпляр того или иного наследника?
Давайте уточним:
какого типа readBuff и что там вообще?
как происходит процесс наполнения structTelegram? на основании чего выбирается экземпляр того или иного наследника?
foreach (ReciveData d in structTelegram)
{
d.Parse(readBuff, i);
i += d.SizeData;
}
где readBuff - массив byte получиных из вне;
i - смещение;
d.SizeData - размер в байтах соответствующего типа наследника(он у наследников разный)
structTelegram - контейнер List<ReciveData> в котором лежат наследники базового класса ReciveData. Эта и есть структура телеграммы которую я получаю. Эту структуру я формирую в процессе выполнения программы.
Это именно то,чему удивлялось и не перестает удивляться мировое сообщество ит -технологий.Там где человечество искало ответы целые поколения,отечественный производитель разрешил в два приема.
Замечу,что такое решение подходит практически к любой накопительной задаче и практически в любой области ,где происходят накопительные процессы,начиная от сантехника,прочищающего стоки и кончая гидрометрцентром,передающим сводку погоды на месяц.
Также отмечу,создатели такого направления в развитии ит-технологий на сегодняшний день имеют огромное количество учеников,что говорит о том,что они развиваются и безусловно займут доминирующие места в областях програмно-накопительных практики и теории.
Давайте уточним:
какого типа readBuff и что там вообще?
как происходит процесс наполнения structTelegram? на основании чего выбирается экземпляр того или иного наследника?
Ну что ты,парниша,прикалываешся.Компилятор разный бывает,однопроходной,многопроходной,с разными степенями контроля по результирующей смещения и т.д.
Учитывая твои проблемы с успеваемостью,обозначу на примере .
Например дан шаблон функции,умеющей сравнивать целые,дробные,символьные переменные.По логике сравнение целой и символьной не должно иметь проблем,но реально получается сравнение неправильное.Тогда мы обьявляем функцию сравнения ф(инт,инт).
Тогда компилятор,формируя рядок функций по шаблону в количестве,равном числу необходимых,явно приведет ,встретив параметры инт ,чар,к параметру инт,инт.
Тогда компилятор,формируя рядок функций по шаблону в количестве,равном числу необходимых,явно приведет ,встретив параметры инт ,чар,к параметру инт,инт.
public interface IParsable
{
public void Parse(int[]buff, int i);
}
public class MySuperNewData : IParsable
{
public void Parse(int[] buff, int i)
{
//парсим
}
}
public class MySuperPuperNewData : IParsable
{
public void Parse(int[] buff, int i)
{
//парсим
}
}
List<IParsable> structTelegram = new List<IParsable>
//заполняеш как-то список (????)
foreach (IParsable d in structTelegram)
{
d.Parse(readBuff, i);
i += d.SizeData;
}
да только что дальше?
Тебе же неизвестны типы в телеграмме, КАК ты будеш заполнять список?
ТС по-моему бинарная десериализация нужна, а не полиморфизм Да и то для этого надо знать структуру потока данных, а откуда она берется и жестко ли заданная, или зависит от предыдущих данных в потоке - ТС пока молчит
кто это уже нажаловался там? преподы? не обижайтесь, просто было очень смешно, как один из них сразу же предложил делать "по-нормальному", при том, что саму задачу ТС четко до сих пор не объяснил.
ещё и про обобщения вспомнил. интересно, преподы отличают переходы "от частного к общему" и "от общего к частному"?
к ТСу вопрос. что известно о структуре "телеграммы" вообще? правильно ли я понял, что её структура ясна до начала парсинга и по ней заполнен список structTelegram наследниками ReciveData (пишется receive)?
Вы видите,Айлендэ,скоко парней ведут задачку,видно в прошлом заработали по 12 число,дальше не хватило.
Однако ,отметим,
чтобы было много работы,много денег,надо дать свободу мышления каждому,это приводит к космическому обмену данными,что образует поток идей,теорий всевозможных,и каждый черпает в этом потоке свое,так формируется возможность реализации .
В прошлом году группу горил,которые проводили теоретическую трассировку айпи маршрутов,мы состыковали с 12 крысами,фактически прошедшими около 8 маршрутов,результат превзошел себя.
Были сформированы парсинговые структуры файлов сооки в точках соприкосновения с инет ресурсами и отправлены к месту дислокации лабораторного сервера.
public interface IParsable
{
public void Parse(int[]buff, int i);
}
public class MySuperNewData : IParsable
{
public void Parse(int[] buff, int i)
{
//парсим
}
}
public class MySuperPuperNewData : IParsable
{
public void Parse(int[] buff, int i)
{
//парсим
}
}
List<IParsable> structTelegram = new List<IParsable>
//заполняеш как-то список (????)
foreach (IParsable d in structTelegram)
{
d.Parse(readBuff, i);
i += d.SizeData;
}
Мне код очень понравился.Гибко и мягко и логически,синтаксически определен правильно.Дали понюхать нашей девочке,не отвернула голову,а наоборот проявила внимание.
Дорогие мои соотечественники !
Поздровляю всех с наступающим в некотором календаре Новым годом .
Счастья вам,морального и материального ,пусть всегда будет на вашем столе печенье и сыр.Пусть ваши кладовки всегда будут полны мешками с всевозможными крупами.Пусть всегда будет на вашей клавиатуре свеже крошки от бутербродов с колбасой и икрой.Мир вам и голубое синее небо.
мне неизвестны (на этапе компиляции), но пользователь знает и я ему предлагаю сформировать структуру телеграммы (разумеется до того как посылки начнут приходить).
neocortex; сказав(ла):
ТС по-моему бинарная десериализация нужна, а не полиморфизм
к ТСу вопрос. что известно о структуре "телеграммы" вообще? правильно ли я понял, что её структура ясна до начала парсинга и по ней заполнен список structTelegram наследниками ReciveData (пишется receive)?
Мне код очень понравился.Гибко и мягко и логически,синтаксически определен правильно.Дали понюхать нашей девочке,не отвернула голову,а наоборот проявила внимание
Помогите решить следующий вопрос:
Мне бы хотелось в абстрактном базовом классе обьявить абстрактную функцию которая принимает один аргумент и возвращает void, но в производных классах этот аргумент предпологаеться различным. Возможно нужно реализовать все через object, но может есть другие варианты? Чтото типа шаблонной функции?
Эту функцию в последствии предпологаю вызывать в цикле по массиву ссылок на базовый класс.
......................................
Это я уже давно написал и помоему писал и выше, только я делал через абстрактный базовый класс. Что на мой взгляд в данном случае не имеет значения.
Вот этим и буду заниматься в скором времени. Создам соответствующую форму с нужными полями. Через форму буду добовлять наследников.
Конкретно вопрос состоял в том что я немог понять следующее:
наследники в своей базе содержат разные данные(int, double, DateTime) мне необходимо вводить различные значения привязанные к базе (maxValue, minValue и т.д.) я както запутался как делать.
Но теперь понял мне нужно обьявить метод в абстрактном базавом классе:
void SetMaxValue(string);
а внутри в наследниках парсить string посвоему.
А пока до меня дошло, мне попытались объяснить что я не так делаю. Хотя в итоге пришли к одному и томуже. Может конечно есть другие способы решения моей задачи но я их не вижу.
Возможно можно былобы применить позднее связование но...
Как всегда,все обозначилось(несмотря на явное настаивание преподов,внимательней отнестись к содержимому носителя информации по посылке) так как кто знает о телеграммах :точка-тере,в современной интерпретации свернулось к string в силу железной логики эволюции.