
Vladimir Bondaryuk
11.02.2017
10:09:46
ILogger с помощью Ioc по всему приложению, а внутри класса реализовать на основе любого фреймворка для логирования

Alexander
11.02.2017
10:38:00
Обычно если хочешь проект на поддержку получить- делать интерфейсы на каждый класс и наследовать интерфесы по 5-6 уровней. Дает очень большой шанс что в этой абстракции никто потом не захочет разбираться. ;)

Anton
11.02.2017
10:50:05
Как лучше всего передавать контекст в десериализатор и использовать его там? Есть какой-нибудь сложившийся паттерн?

Google

Anton
11.02.2017
10:52:15
Я имею в виду что-то типа такого:
JsonReader.Read<MyClass>(jsonString, context);
При том, что внутри могут работать несколько разных кастомных десериализаторов и им всем нужны разные контексты

Ilya
11.02.2017
10:54:27
почему им нужны разные контексты?

Anton
11.02.2017
10:57:33
Ну скажем глубоко внутри MyClass есть некие классы Person и Group. В json'е например приходят только их id. Получается, что в кастомном десериализаторе Person нужен доступ к некому словарю Dictionary<string, Person>, а в Group к словарю Dictionary<string, Group>. Если не передавать контекст, приходится получать к этому всему доступ через static или синглтоны, что чревато проблемами
А если передавать, но приходится передавать некую обёртку, в которой есть ссылки на эти два словаря
Что тоже как-то не очень
Ну и в общем-то если нужно иметь две параллельные сессии, каждая со своими наборами данных, то статик и синглтон совсем не подходит. Остаётся только второй вариант, но я не совсем понимаю, как будет правильно его реализовать
Пока вот к такой реализации пришёл:
http://pastebin.com/fe7CRFtY
Но мне интересно, как это другие делают

Slava
11.02.2017
11:26:47

Anton
11.02.2017
11:27:43

ACx0
11.02.2017
11:28:22

Anton
11.02.2017
11:29:48

Google

ACx0
11.02.2017
11:30:52

Ramil
11.02.2017
11:45:05
ребята интересный вопрос
как сменить тему винды в без внешних библ?

Vladimir Bondaryuk
11.02.2017
11:48:21


Anton
11.02.2017
11:55:19
Единственное, что у тебя метод
public MyClass Parse
По факту это будет два разных метода:
public Person Parse(JsonStream stream) { ... }
public Group Parse(JsonStream stream) { ... }
Но вообще да, наверное эти методы должны быть в том же классе, где и контекст хранится
Так что спасибо, это натолкнуло меня на мысль)
Мне кажется, у меня затык именно в том, как комбинировать эти десериализаторы. То есть может приходить куча разных json'ов. В каких-то нужен только десериализатор Person, в каких-то — только Group, а в каких-то оба. И чем больше классов, тем больше комбинаций.


Ilya
11.02.2017
12:27:51
думаю, что нужно смотреть в сторону json.net с ним это сделать проще
несколько конвертеров и всё

Anton
11.02.2017
12:36:56
несколько конвертеров и всё
Ага, посмотрел. Как я понял, у них практически такое же решение, как у меня:
http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_JsonConvert_DeserializeObject_3.htm
Только я этот список params ещё обернул в дополнительный класс.
Ладно, спасибо, буду пробовать

Ramil
11.02.2017
13:10:15
хм
хм хм хм
может кто подсказать
кое что

Sign
11.02.2017
13:13:30
Слабо писать сразу вопрос?

Ramil
11.02.2017
13:20:47
как в вебклиенте использовать путь с точкой?

Ilya
11.02.2017
13:22:46
у тебя реквест сожержит точку?

Google

Ramil
11.02.2017
13:23:11
lf
да
чем впф веббраузер отличается от винформовского кто нить знает?

Ilya
11.02.2017
13:25:35
WebUtility.UrlEncode()
только не всю урлу туда пихай
скинь пример

Ramil
11.02.2017
13:26:42
Недопустимый URI: Невозможно определить формат URI.

Ilya
11.02.2017
13:27:41
хотя точки по ходу не надо экранировать
код покажи

Ramil
11.02.2017
13:28:00
string key = @"trnsl.1.1.24323411T124358Z.8e7532jh278bce86c.ef14eb086d4660386f24324njnjikb87c3ea3563690";
string url = "https:\\translate.yandex.net\api\v1.5\tr.json\translate?key=" + key +
"&text=" + tBoxInput.Text + "&lang=en-ru&format=plain";

Ilya
11.02.2017
13:29:26
и сразу, почему не string.format или интерполяция?
это раз

Ramil
11.02.2017
13:29:59
так переносить удобнее
мне бы тут пришлось 2 раза string.Format писать

Ilya
11.02.2017
13:30:17
два string url = @
поставь собаку

Ramil
11.02.2017
13:30:53
Недопустимый URI: Невозможно выполнить разбор имени хоста.

Ilya
11.02.2017
13:31:08
чем делаешь реквест?

Алексей
11.02.2017
13:31:36
А кто экранировать слеши будет?

Ramil
11.02.2017
13:31:36
пробовал Webclient и HttpWebRequest

Google

Ramil
11.02.2017
13:32:02
насколько я знаю экранировать надо только слеши "/"
а стоп
все норм, слеш не в ту сторону был
как вызвать метод через какое то время?

Axm
11.02.2017
14:03:08
По таймеру или через Task.Delay

Ramil
11.02.2017
14:05:40
task.delay принимает только имя метода?

Летучая
11.02.2017
14:06:02

Admin
ERROR: S client not available

Axm
11.02.2017
14:07:48

Ramil
11.02.2017
14:08:53
в мсдн вообще нет перегрузки с экшном
что то я тут не вкуриваю
...
стоп

Летучая
11.02.2017
14:09:52
я написал выше функцию setTimeout
эт нестандартная

Ramil
11.02.2017
14:15:17
как передать параметр в Action?

Летучая
11.02.2017
14:15:34
лучше в лямбде вызови метод, который нужен )
типа: setTimeout( () => { yourMethod(args) }, 1000);
но есть вариант покурить извращения, типа передачи вместо Action целой функции, типа Func<T, U> func и вызове func(a, b);

Vladimir Bondaryuk
11.02.2017
14:17:00

Google

Летучая
11.02.2017
14:17:59
я проиграл, когда обнаружил у Func 17 перегрузок
17, Карл

yegorf1
11.02.2017
14:18:15
wcf
В итоге не став париться с wcf и линухом, сделал на nancy

Летучая
11.02.2017
14:19:03
Func<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>

Ramil
11.02.2017
14:19:45
Func<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>
вот, то что надо

Летучая
11.02.2017
14:20:43

yegorf1
11.02.2017
14:20:58
Мне зашло очень даже
Мне правда не нравится 100 запросов в секунду для поллинга
Но в целом, какая разница

Летучая
11.02.2017
14:22:13
купи сертификат и подключись к серверам телеги без полинга

yegorf1
11.02.2017
14:23:29
Не, ты не понял
У меня два приложения
Бэк и Фронт
Фронт поллит Бэк через http для апдейтов
И через http отправляет ему запросы, которые кладутся в очередь

Ilya
11.02.2017
14:30:13
он вроде реже реквесты шлёт

yegorf1
11.02.2017
14:31:44
Так я сам выбираю, когда их слать

Ilya
11.02.2017
14:34:06
комет даёт возможность слать меньше реквестов при этом реагировать на том же уровне
https://youtu.be/Td6QGidr8hc?t=22m43s

ACx0
11.02.2017
14:57:44

Ramil
11.02.2017
15:01:44
Эта группа больше не существует