
viktor
26.04.2017
20:03:52
отож

Сергей
26.04.2017
20:04:01
Не ну рили
Нужно сутки быть производительным? Вот тебе решение. Кофе хуефе, лол
Можешь и не сутки

Google

Сергей
26.04.2017
20:04:48
Главное быть адекватным и не злоупотреблять

viktor
26.04.2017
20:21:28
Тогда еще один вопрос, но уже по C#, хотя даже не совсем по C#, а по подходу решению задачи.
Вот есть некий сервис, который мы вызываем в синхронном режиме, в ответ получаем XMl.
Есть три варианта ответа (соответственно три зазные Xml)
1) Для физ лиц.
2)Для юр лиц.
3) Ошибка.
Мне получается нужно определить что это за XML, к какому типу относится и запихнуть ответ в соответствующую модель.
определять ошибку буду (Linq to xml)вот таким вот образом.
XDocument xdoc = XDocument.Load("xml.xml");
XElement rootElemet = xdoc.Element("root");
XElement responseElemet = rootElemet.Element("response");
XAttribute responsecodeAttribute = responseElemet.Attribute("code");
а физ лицо от юрика по другим атрибутам
Но в таком случае мой код будет похож на веретено IFElse конструкций, а я этого очень не хочу. Потом Unitttest хрен напишешь, да и вообще не читабельное говно.

Mikhail
26.04.2017
20:27:36
А сервис сторонний и его исправить нельзя?

viktor
26.04.2017
20:27:52
Да, сторонний

Mikhail
26.04.2017
20:28:56
А может лучше десериализовать XML в класс а не linq2xml юзать
?

viktor
26.04.2017
20:29:23
Для проянения общей картину скажу что это проект Банка, я разраб ан стороне консалтинга.
Все интеграции будут через сервисы шины, а шина в свою очередь будет работать со всякими абисами, платежными системами и т.д.

Mikhail
26.04.2017
20:30:44
Ууу
Тырпрайзззз

Google

Mikhail
26.04.2017
20:31:06
И документации нет, и вообще ничего нет

viktor
26.04.2017
20:31:27
ну в смысле документации.
мне предоставили Api, с описанием как вызывать и что я получу в ответ.

Mikhail
26.04.2017
20:31:51
Или ты про то что не знаешь в юриков или в фл

viktor
26.04.2017
20:31:54
этим и руководствуюсь
да, не знаю будет это физик, юрик иил эрор

Mikhail
26.04.2017
20:32:59
Ну получай тип так как ты выше писал
А дальше десериализуй

viktor
26.04.2017
20:33:15
Да, я так и хочу
Но вот вопрос, как сделать это красиво?
чтоб не наткнуться на нал референс эксепшн мне нужно будет написать под каждой нодой If-else
А я типо не хочу веретина говноконстукций.

Mikhail
26.04.2017
20:36:20
Можно еще внутри что-то в отдельные методы вынести, чтоб почище было

Again
26.04.2017
20:45:43
Есть люди,которые начинали учиться C#
с офф.сайта майкрасофт?

Сергей
26.04.2017
20:53:44
Они теперь сениоры 999к и не сидят в этом чате

Vasily
26.04.2017
20:54:56
Когда я начинал учить c# , наиболее доступный мсдн был в оффлайн варианте

zig ? zag
26.04.2017
20:58:32

Сергей
26.04.2017
20:58:51
Когда учил с# по msdn

Google

Сергей
26.04.2017
20:58:54

zig ? zag
26.04.2017
20:59:07
Обидно вот ))

viktor
26.04.2017
21:10:06
Че за фото то? ничего не понял

Mikhail
26.04.2017
21:10:33

viktor
26.04.2017
21:12:06
бял
плохо когда не можешь в локальные мемчики

Mikhail
26.04.2017
21:13:14
Просто переходи на ноджыэс и линукс без вопросов
И все

viktor
26.04.2017
21:20:34
Кстати, я в C# относительно не давно, так что многих тонкостей еще не знаю, но в IT и в разработке уже давно, так что не все так плохо,Ю можно опять начинать меня любить.
Посему порой буду задавать нубские вопросы
Вот один из них.
К тестовым сервисам у меня тупо нет доступа, банк пока доступы не дал.
Я знаю что сервис SOAP, а ответ от него будет в формате XML, пока суть да дело, я чтоб не терять время херачу модели и делаю фейковый репозиторий.
Теперь к вопросу, какой тип возвращаемого обьекта лучше использовать XmlDocument или тупо захерачить object?

Axm
26.04.2017
21:24:30
Чувак, если к тебя соуп, то ты по идее можешь сгенерить все модели автоматом, а не писать их руками.
Насколько я помню, в студии есть даже кнопка, чтобы добавить сервис в референсы

viktor
26.04.2017
21:25:42
да, есть. только доступа к сервисам нет
мне дали Api, дали форматы XML. я XML конвертнул в XSD, а XSD в класс

Axm
26.04.2017
21:26:41
Соответственно, все надо десереализовавыть в классы и не париться с xmldoc

viktor
26.04.2017
21:27:17
чуть выше я уже описал почему нельзя сразу дессериализовать в класс
Я заранее не знаю какой будет ответ, их может быть 3 и все 3 разные по структуре

Axm
26.04.2017
21:27:45
У тебя один метод возвращает три разных объекта?

viktor
26.04.2017
21:28:06
да

Сергей
26.04.2017
21:28:11
Чувствую говноархитектуру

Google

viktor
26.04.2017
21:28:13
3 разных структуры Xml

Axm
26.04.2017
21:29:49
Ну там выше уже писали тоже тебе. делаешь проверку чтобы понять что за структура, сразу десериализуешь ее в объект нужного типа

viktor
26.04.2017
21:30:13
да, я так и буду делать.

Сергей
26.04.2017
21:30:34
Алсо, с хмл тоже можно сгенерить модель студией

Axm
26.04.2017
21:31:00

viktor
26.04.2017
21:34:39
возможно я плохо сформулировал вопрос, перефразирую и задам еще рас.
Как будет выглядеть архитектура сервиса.
Я добавлю сервис референс на нужный мне сервис.
С этим сервисом я буду работать через Репозиторий.
Чтоб не терять время я сейчас напишу фейковый репозиторий, который по запросу будет возвращать нужные мне xml ответы.
Так вот и вопрос.
Объект какого типа возвращает соап сервис, если ответ в формате XML?

Axm
26.04.2017
21:36:11
Все зависит от того, как написан тот сервис. Если они в wsdl все типы прописали, то студия тебе сгенерит методы и их типы сама и не надо будет париться. Если нет, то наверно там будет object.

viktor
26.04.2017
21:38:59
понял, спасибо.
бля, ванклик.
Спасибо добрый человек
а то я так и ходил бы как додик, до конца своих дней

Black
26.04.2017
21:55:27
Добрейший вечерочек
господа
Сходу вопрос. Имеется код вида:
async Task<string> GetBarcode()
{
ZXing.Mobile.MobileBarcodeScanner scanner = new ZXing.Mobile.MobileBarcodeScanner();
ZXing.Result r = await scanner.Scan();
return await Task.FromResult(r.Text);
}
Вернее вот метод который его вызывает:
partial void ConnectWithQR(UIButton sender)
{
string ip = GetBarcode().ToString();
client = new TcpHelper(ip);
sss.Text = client.IsConnected.ToString();
}
Каким образом можно подождать выполнение GetBarcode и продолжить выполнение в ConnectWithQR только после того, как GetBarcode вернет значение?


viktor
26.04.2017
22:04:39
вот у меня есть ДатаСервайс, кторый работает с репозиторием
public void AddUserAsync(User model, Action<Exception> callback)
{
this.dataRepository.AddUser(model).ContinueWith((r) => callback(r.Exception));
}
вот код вызываемого метода из репозитория
public async Task AddUser(User model)
{
using (var context = new DataContext())
{
context.Users.Add(model);
await context.SaveChangesAsync();
}
}

Black
26.04.2017
22:07:06
блин, я не въезжал в callback-функции, поэтому немного сложно для понимания :D

Google

Black
26.04.2017
22:09:13
Но все равно спасибо. Попробую разобраться

viktor
26.04.2017
22:09:33
ща, секунду
через пару минут отпишусь

Black
26.04.2017
22:12:08
Вот собственно вопрос: как в моем случае приостановить поток, в котором был вызван метод GetBarcode?
До того момента, пока он не вернет значение

viktor
26.04.2017
22:12:30
await
Хотя я тот еще советчик, я с многопоточностью не так много работал.
https://metanit.com/sharp/tutorial/13.3.php
вот хороший ресурс

Black
26.04.2017
22:14:42
прост await может использован только в контексте асинхронного метода, значит нужно будет еще один метод делать. Думал может кто-то более красивый вариант подскажет :)

viktor
26.04.2017
22:15:42
в смысле, зачем еще один метод?

Black
26.04.2017
22:16:17
partial void ConnectWithQR(UIButton sender)
{
string ip = GetBarcode().ToString();
client = new TcpHelper(ip);
sss.Text = client.IsConnected.ToString();
}
не сделаешь асинхронным

viktor
26.04.2017
22:16:19
у тебя же твой баркод и так асинхронный
Эта группа больше не существует