
Ilya
12.06.2017
15:26:10

Летучая
12.06.2017
15:26:36

Andrey
12.06.2017
15:28:15
Шо не таг?
Вот у меня похожий код для парсинга подкаст фида, так как там ещё так каша с дублированием полей.

Google

Летучая
12.06.2017
15:30:40
Есть же JsonProperty
Лёгким движением руки коричневый код становится менее коричневым https://github.com/Worldbeater/VkLibrary/blob/master/VkLibrary.Core/Types/Groups/Group.cs

Влад
12.06.2017
15:32:16
[IOException: The handle is invalid.]
mscorlib_ni!System.IO.__Error.WinIOError(Int32, System.String)+0xc6a9f2
mscorlib_ni!System.IO.__ConsoleStream.Read(Byte[], Int32, Int32)+0xad
mscorlib_ni!System.IO.StreamReader.ReadBuffer()+0x33
mscorlib_ni!System.IO.StreamReader.Read()+0x2a
mscorlib_ni!System.IO.TextReader+SyncTextReader.Read()+0x19
mscorlib_ni!System.Console.Read()+0x14
DotaTextGameBot!DotaTextGame.Program.Main()+0x25
Закинул приложение на апхарбор.

Daniel
12.06.2017
15:32:42
ребят

Влад
12.06.2017
15:32:47
ему не нрав нрав ввод, что ли?

Daniel
12.06.2017
15:32:53
скиньте чатик хабра если есть у кого

Andrey
12.06.2017
15:33:10
JsonProperty уж для совершенно тупых структур подходит.

Летучая
12.06.2017
15:33:50
Ты чего
Из 90-ых прилетел?

Andrey
12.06.2017
15:34:40
Для всех
Эм, как ты парсить по условию будешь? К примеру есть 2 поля в структуре. Если первое поле "краше", то кладём в пропертю его, а если другое, то его.

Летучая
12.06.2017
15:34:51
У вк такого нет

Google

Andrey
12.06.2017
15:35:03
Для всех

Летучая
12.06.2017
15:35:05
У JsonProperty есть JsonConverter

Ilya
12.06.2017
15:35:09

Andrey
12.06.2017
15:35:15
Как ты Id парсить будешь?

Летучая
12.06.2017
15:35:43
[JsonProperty("id")]
public int Id { get; set; }
Не понимаю твоей претензии.

Andrey
12.06.2017
15:36:03

Летучая
12.06.2017
15:36:09
Где?

Andrey
12.06.2017
15:36:13
И перенеси это на аннотации.
Вот такая красота только для очень тупых структур подходит, к сожалению.

Ilya
12.06.2017
15:37:47

Andrey
12.06.2017
15:38:09

Летучая
12.06.2017
15:38:12

Andrey
12.06.2017
15:38:29

Ilya
12.06.2017
15:38:36
а можешь привести пример "не тупой структуры" вот этого айдишника?

Летучая
12.06.2017
15:38:36
На скрине выше автор сидит на двух стульях
Не знаю зачем правда
Мб это такая попытка поддержать легаси

Andrey
12.06.2017
15:38:56

Google

Ilya
12.06.2017
15:39:00
да

Летучая
12.06.2017
15:39:09

Ilya
12.06.2017
15:39:10
ты просто говоришь про тупые структуры

Andrey
12.06.2017
15:39:54
Спокойно: посмотри фиды подкастов. Там есть теги для тунца, а есть для остальных клиентов. В идеале надо как-то понимать, что будет лучше для пользователя и выбирать именно это.

Ilya
12.06.2017
15:41:05
сделай либо в разные модели либо в одной модели опиши все типы тегов

Andrey
12.06.2017
15:41:59
Можно и так, только смысла нет в этом. Тебе всё равно придётся писать код, подобный этому.

Roman
12.06.2017
15:42:14
Его придется писать меньше

Andrey
12.06.2017
15:42:16
Так как тебе всё равно как-то надо выбирать нужное поле.

Летучая
12.06.2017
15:42:38
Вообще если такие проблемы
То можно заморочиться и написать свой атрибут

Летучая
12.06.2017
15:42:49
И свой конвертер

Roman
12.06.2017
15:42:54
Если все "сложные" поля вынесены и заполняются вручную, простые можно автоматически парсить аттрибутами
А если делать вот такое ручное заполнение общим подходом - это увеличивает вероятность тупой ошибки
Усложняет поддержку, расширение ну и так далее

Летучая
12.06.2017
15:43:43
Чтобы писать что-то типа
[JsonProperty("one, two, three")]
public string OneTwoThree { get; set; }
Согласен с Романом, я пытался так жсон парсить

Andrey
12.06.2017
15:44:22
Ок, теперь нам надо в итоге получить одну модель, которая является объединением исходных по некоторой логике. И нам всё равно придётся писать копирование простых пропертей.

Летучая
12.06.2017
15:44:24
Вообще не понравилось и запутался

Google

Roman
12.06.2017
15:45:26
С чего вдруг? Если ты вынес сложные поля тем или иным образом - не нужно. Боже, да можно просто после автоматического парсинга руками заполнить id, и то удобнее

Friedrich
12.06.2017
15:46:17
Самое главное — что это не нужно. Можно вообще заставить машину генерить вот эти названия с подчёркиванием, если сунуть в сериализатор правильный форматтер. И тогда даже атрибуты будут не нужны, даже небо не нужно.
Машина полностью заменит человека!

Влад
12.06.2017
15:46:42
Есть ещё какой-то вариант держать консоль включенной, не считая Console.Read()/ReadKey()/ReadLine()?

Roman
12.06.2017
15:46:45
Да, а так еще лучше

Влад
12.06.2017
15:46:58
А то апхарбору не нрав IO.

Andrey
12.06.2017
15:46:58

Friedrich
12.06.2017
15:47:07

Admin
ERROR: S client not available

Влад
12.06.2017
15:47:34
Там я через контрол ф5 не запущу.

Friedrich
12.06.2017
15:47:40

Andrey
12.06.2017
15:48:08

Влад
12.06.2017
15:48:08
Message
Terminated with exitcode -2147467259
Exceptions
[IOException: The handle is invalid.]
mscorlib_ni!System.IO.__Error.WinIOError(Int32, System.String)+0xc6a9f2
mscorlib_ni!System.IO.__ConsoleStream.Read(Byte[], Int32, Int32)+0xad
mscorlib_ni!System.IO.StreamReader.ReadBuffer()+0x33
mscorlib_ni!System.IO.StreamReader.ReadLine()+0x13f
mscorlib_ni!System.IO.TextReader+SyncTextReader.ReadLine()+0x19
mscorlib_ni!System.Console.ReadLine()+0x14
DotaTextGameBot!DotaTextGame.Program.Main()+0x25

Friedrich
12.06.2017
15:48:24
Не делой так.
Попробуй if(Environment.UserInteractive) { Console.ReadLine(); }
Это как минимум.

Летучая
12.06.2017
15:49:16
и в метод отдельный

Google

Friedrich
12.06.2017
15:49:27
А как максимум — вообще откажись от этой привычки везде втыкать Console.ReadLine.

Andrey
12.06.2017
15:49:30
А потом выкинь и прикрути логгер)

Влад
12.06.2017
15:49:45
А эт чё тогда?

Andrey
12.06.2017
15:50:00
Ты на сервере своём?

Friedrich
12.06.2017
15:50:01
Ну я ж тебе сказал что сделать :(

Влад
12.06.2017
15:50:27
Та ща)

Andrey
12.06.2017
15:50:30

Friedrich
12.06.2017
15:51:13
@BuradoSenpai, постой. Больше расскажи про свою прогу. Она у тебя что, вся асинхронная какая-то?

Влад
12.06.2017
15:51:34
+

Friedrich
12.06.2017
15:51:41
Если просто так тупо убрать ReadLine — то она будет мгновенно закрываться?

Влад
12.06.2017
15:51:45
бот для телеграма игровой.
не мгновенно, но через пару сек.

Friedrich
12.06.2017
15:52:17
А вот этот DoWork() у тебя не возвращает таск какой-нибудь, которого можно было бы дождаться?

Влад
12.06.2017
15:52:35
нет, но это хорошая идея)
Спасибо)

Friedrich
12.06.2017
15:53:40
Если тебе срочно затычка нужна — вешай туда Thread.Sleep(Timeout.Infinite). Но это костыль, идея с таском куда полущ.

Влад
12.06.2017
15:54:04
Я сделал Wait();

Friedrich
12.06.2017
15:54:14
Оке.

Влад
12.06.2017
15:54:29
Там и так бесконечный цикл, хотя почему-то закрывалось.
Эта группа больше не существует