169 похожих чатов

Можно ли в dart как-то написать Generic http клиент, чтобы

результат мог быть и объект и List?

18 ответов

5 просмотров

Что значит "объект и лист"? Может "объект или лист"? Union-type открытого в дарте нет (только под капотом у FutureOr).

Аман- Автор вопроса
Konstantin Dovnar
Что значит "объект и лист"? Может "объект или лист...

Да "объект или лист". Я уже передумал реализовывать такое. Не знаю как использовать методы JsonSerializable fromJson и toJson для generic.

Аман
Да "объект или лист". Я уже передумал реализовыват...

Можно используя extends в дженерике, создав интерфейс\базовый класс для методов fromJson/toJson, но звучит как не самое интересное занятие.

Аман- Автор вопроса
Konstantin Dovnar
Можно используя extends в дженерике, создав интерф...

Но, удобно. Согласитесь, удобнее httpGet<Order>("query") Чем десериализировать каждый response

Аман
Но, удобно. Согласитесь, удобнее httpGet<Order>("q...

Чтобы избавиться от этого мартышкиного труда придумали кодогенерацию, рефлексию. Если со вторым беда, то вот для первого вариантов хоть отбавляй. Генерация запросов, генерация сериализации и пр. Да и без согласования "сверху" (от dart vm) слабо представляю, как должен метод httpGet<Order>("query") понять как ему инициализировать Order.

Аман- Автор вопроса
Аман- Автор вопроса
Konstantin Dovnar
Чтобы избавиться от этого мартышкиного труда приду...

И использовал так: GenericHttp<Fund>.HttpGetAsync($"api/Orders/GetUserFundDetails/{AssetId}/)

Аман
screenshot В C# я реализовал это как-то так

Слабо знаком с шарпом, но он явно более богатый язык, нежели простенький дарт. Как DeserializeObject выбирает конструктор через который будет инициализация объекта происходить? Если их 2 подходящих? Если ни одного?

Konstantin Dovnar
Слабо знаком с шарпом, но он явно более богатый яз...

Судя по всему, через обычный свитч дёргает нужный конструктор

Аман- Автор вопроса
Konstantin Dovnar
Слабо знаком с шарпом, но он явно более богатый яз...

конструктор по умолчанию (без параметров)

Аман- Автор вопроса
Konstantin Dovnar
🤢

Можно указать через атрибут нужный конструктор

Аман
конструктор по умолчанию (без параметров)

Единственное, что так сходу могу посоветовать — сделать свой метод обёртку, который будет принимать dynamic и дальше выезжать на проверках.

Аман- Автор вопроса
Konstantin Dovnar
(буэ это не отменяет)

Вам просто кажется что не удобно) Если привыкнуть в кайф

Аман
Вам просто кажется что не удобно) Если привыкнуть ...

Привыкнуть можно ко многому. Кто-то с битого стекла может с улыбкой себе засунуть в попу. Но хорошей идеей оно от этого не станет. Но это я противник рефлексии на ровной месте, так что меня слушать не надо. Кодогенерация и/или dynamic в параметрах в помощь

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
50
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Hello, I need a hand, this is my code: body: ExtendedImageGesturePageView.builder( scrollDirection: Axis.vertical, controller: _pageController, itemCou...
𝘞𝘦𝘢𝘳𝘪𝘯𝘨𝘔𝘦𝘥𝘢𝘭 🦋
1
Guy, how to make redirecting to a page like this when http status 401?
Islam Kurbanov
8
Только что в чате Я.Вебмастера потратил я час на пустые споры с каким-то челом. Он с пеной у рта доказывал мне, что любой "самопис" - дерьмо, что у него дыры в безопасности, ...
Андрей [aharito] Харитонов
2
можно эстетический вопрос? у меня есть кучка мелких-мелких функций типа: function AddInteger(aparent:pointer; aname:PWideChar; aval:Int32):pointer; begin result:=AddNode(apa...
Alexey Kulakov
2
why html and css is not standard? i mean why different browser has their own engine and styles and how them work to show result to end user?
Mr Thieves
11
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Карта сайта