@xamarin_russia

Страница 183 из 619
Кита
22.09.2017
14:10:05
а ServiceLocator это анти-паттерн, лол)

Sherzod
22.09.2017
14:12:21
Я под сервис локатором вот это понимаю svc.Register<IService>(new ServiceImpl()); var s = svc.Resolve<IService>();

Летучая
22.09.2017
14:12:46
Google
Летучая
22.09.2017
14:13:14
Если только ViewModelLocator можно.

Sherzod
22.09.2017
14:13:16
Ок, для ДИ что есть?

Sherzod
22.09.2017
14:13:56
Ок. Спс

Kirill
22.09.2017
14:14:55
ну он в 1 очередь для пробраса методов в нативные реализации, но и для DI в CoreProject думаю тоже можно использовать

Летучая
22.09.2017
14:15:39
Либо Autofac притащить ? И Entityframework заодно ??

Кита
22.09.2017
14:15:50
DryIoC

шустрее Autofac а возможности +- те же

Kirill
22.09.2017
14:16:14
Кита
22.09.2017
14:16:58
Хм, надо посмотреть..
В исходниках описана его реализация. ILGeneratorом там не пахнет

самый быстрый способ создать объект - new()

сопостовимо с этим способом по скорости создание объектов по их типу через ILGenerator

Google
Кита
22.09.2017
14:18:30
и отстает раза в 2 Activator.CreateInstance

Sherzod
22.09.2017
14:19:47
Kirill
22.09.2017
14:20:32
и отстает раза в 2 Activator.CreateInstance
Ок. Надо бы поизучать сей вопрос.

Летучая
22.09.2017
14:20:38
Кстати, для расфасовки вьюмоделей по вьюхам кроме ViewModelLocator-ов ничего не придумали?

Пока кажется самым удобным декларативным способом

Sherzod
22.09.2017
14:22:39
Как раз в дорогу выезжяю

Интернета не будет

Кита
22.09.2017
14:24:18
Кстати, для расфасовки вьюмоделей по вьюхам кроме ViewModelLocator-ов ничего не придумали?
ViewModelLocator это вообще в Prism классец, ну и в некоторых других фреймворках

Летучая
22.09.2017
14:24:55
Sherzod
22.09.2017
14:24:57
Призму стоит тащить? Или в формсах всё ок?

Летучая
22.09.2017
14:25:11
И не мучать код-бихайнд.

Sherzod
22.09.2017
14:25:11
Я просто хочу про архитектуру прочитать заранее

Чтоб на грабли не наступать и в ногу не стрелять

Летучая
22.09.2017
14:25:54
Я такое название (и способ) из mvvm light взял
я из какого-то опенсорс проекта на гитхубе

Кита
22.09.2017
14:26:02
Честно скажу мне не нравится ViewModelLocator

Страница получает свой контекст из навигейшн-сервиса

Летучая
22.09.2017
14:26:49


Kirill
22.09.2017
14:26:52
У нас NavigationService реализован, в который передается название страницы, он создает её, создает её ViewModel и сеттит.

Google
Кита
22.09.2017
14:27:40
что за то. Я не юзаю формсы но ты думаешь нельзя иначе делать? Как например Kirill

Только сервис навигации не передает строки у меня а оперирует типами

Кита
22.09.2017
14:28:50
Кодбехаинд тоже остается чистым в большинстве случаев

Летучая
22.09.2017
14:29:05
ну да, контекст пейджа же мы извне сетаем

Кита
22.09.2017
14:29:11
но только это не сама цель сделать кодбехаинд чище. А преследуется другая цель. Иметь возможность посмотреть в любой момент к какой странице привязана вьюмодель через searchreferences, а не искать по всему солюшну строку с именем вьюмодели

Sherzod
22.09.2017
14:29:42
Это, настройки я помню в нативе андроиде отдельеый интент был, в формах самому рисовать?

Сорри если нубские вопросы, гуглить не могу только телега

Кита
22.09.2017
14:31:58
Sherzod
22.09.2017
14:32:40
Android сам рисовал УИ

Кита
22.09.2017
14:33:50
Android сам рисовал УИ
ну что значит сам рисовал. Он отправлял тебя на активити с Preferences

Кита
22.09.2017
14:34:16
Ну так какая разница формс не формс. Принцип тот же остался

Sherzod
22.09.2017
14:35:12
Ну в нативе ты не думал как рисовать, передавал объект преференсы и всё

Кита
22.09.2017
14:35:14
Только вот по возвращению обратно в аппу активити формовская имеет шанс быть уничтоженной из-за своей жирности ?

Kirill
22.09.2017
14:35:42
ну что значит сам рисовал. Он отправлял тебя на активити с Preferences
На Андроиде есть PreferenceActivity, от которой можно отнаследоваться, передать ей файл с описанием настроек и система сама весь UI построит и будет сохранять настройки. В формс нет такого из коробки

Google
Kirill
22.09.2017
14:36:27
+1

Kirill
22.09.2017
14:36:44
Кастомизировать сложно

Летучая
22.09.2017
14:37:08
Надо хранить настройки в своём ящике ?

Kirill
22.09.2017
14:37:16
а, ну да, PreferenceActivity, но а в чем сложность с формсами?
Ну формс сам не генерирует UI) но сложностей да, нет)

Кита
22.09.2017
14:38:28
Просто на формс существует принцип одной активити. Да. Есть такое

Kirill
22.09.2017
14:39:51
Ну да. И все на фрагментах. Конечно можно реализовать несколько активити... Но это уже бред)

Kirill
22.09.2017
14:44:04
Не на фрагментах?

Кита
22.09.2017
14:44:26
да, на обычных вьюгрупс

табы остались на фрагментах

Kirill
22.09.2017
14:47:07
Надо глянуть

Igor
22.09.2017
15:08:53
Отвлекають. Суть в том что это понятие гораздо шире. Fody имеет ряд признаков AOP но не меняет парадигму программирования. У тебя как были раньше DI сделанные через депенденси-контейнеры которые работают с объектами так и остались. Фишка AOP в том что класс или структура перестает по сути быть объектом. А становится аспектом и внедряется туда куда ты опишешь метаописателями. Связываемость кода становится вообще минимальной. Кода становится не сильно меньше как раз, а его связываемость в целом уменьшается. И к написанию аспектов уже применяется несколько дугой подход, поддерживаемость кстати такого кода оставляет желать лучшего, поэтому максимум где AOP нашло себе достойное применение до сих пор это “невидимое” логирование
По твоим размышлениям ФП может быть только в хаскель, а ООП в smalltalk. C# язык мультипарадигменный и позволяет комбинировать парадигмы по месту использования. Если мы хотим кусочек аоп, это не значит что нужно писать все на нем.

Google
Igor
22.09.2017
15:18:07
Ты про Егора Бугаенко?

Кита
22.09.2017
15:27:00
“ORM это обидно” “Объектно-ориентированное вранье” вот это все ?

Igor
22.09.2017
15:29:40
Хорошая тема, но не для этого чата

Vladislav
22.09.2017
19:09:02
Какой простой и элегантный метод, почему я сам не додумался до него. А то биндинг контекст задавал в навигейш сервисе

Хотя у меня и навигация реализована через вьюмодели

Кита
22.09.2017
19:11:09
Летучая
22.09.2017
19:11:49
+

логика расфасовки в 1 месте сосредоточена

Vladislav
22.09.2017
19:12:10
Я считаю что удобнее как раз биндинг контекст задавать в навигейш сервисе
Ну у меня так и сделано. Правда я в навигейш сервис передаю просто нужную вью модель и по ней подбирается нужная страница

Кита
22.09.2017
19:12:22
тип или инстанс?

Vladislav
22.09.2017
19:12:35
Инстанс

Летучая
22.09.2017
19:12:40
Лучше тип, наверное.

Vladislav
22.09.2017
19:12:54
По идее да

Но создание инстанса через рефлексию работает медленнее

Кита
22.09.2017
19:15:03
Но создание инстанса через рефлексию работает медленнее
поэтому и нужен хороший DI контейнер. Кстати я глянул - в формс проектах я в навигейшн сервисе резолвил вьюмодели, а в нэйтиве уже эта логика убрана на базовую страницу

Vladislav
22.09.2017
19:15:56
Кита
22.09.2017
19:16:55
Хмм, ок и что мне каждый раз пересдавать инстанс вью модели при новом переходе на ту же страницу?
ну а чего такого. Жизненный цикл вьюмодели равен жизненному циклу страницы

вьюмодель знает когда на страницу пришли, когда с неё ушли и когда её уничтожили

зачем писать дополнительный код сброса состояния вьюмодели например если можно просто создать новый инстанс

Vladislav
22.09.2017
19:18:23
Эмм и что мешает мне тогда вручную для перехода создавать инстанс вью модели?

Страница 183 из 619