Xamarin.Forms набирает обороты и, к сожалению, из коробки доступно совсем мало возможностей, все неоходимо добавлять через Dependency service или рендереры. На этой волне стало очень много различных библиотек, добавляющих зачастую базовый функционал.
Мое решение не исключение.
У меня стояла задача сделать небольшое расширение, позволяющее добавить эффект нажатия на почти любой элемент для iOS и Android.
Так уж вышло, что в нашем старом ASP.NET MVC проекте модели таблиц базы данных хранились с идентичными именами, т.е. в нижнем регистре, с подчеркиваниями и пр., а DTO уже в стандарте именования .NET.
Это было сделано по ряду причин. Основные из них: явно задана область применения модели; удобство при построении linq запросов, когда названия таблиц и столбцов можно спокойно переносить из, к примеру, sql запроса.
К сожалению в .NET Core приложениях EDMX больше не поддерживается, а в CLI команде достаточно скудный набор возможностей. Поэтому нам пришлось пойти на небольшую хитрость.
Наверняка, рано или поздно каждому разработчику приходилось создавать таблицы данных с возможностью сортировки по столбцам и пр. Я не исключение. В нашем проекте подобные таблицы есть чуть ли не на каждой странице, можно сказать что 90% контента выводится через них. Поиск и сортировка по таблицам, естественно, работает без перезагрузки страницы.
Само собой, расширять семантики методов API контроллеров до бесконечной простыни было бы абсолютно глупо непрактично, поэтому нам требовалось универсальное решение для всех наших таблиц. Найти его помогли рефлексия и деревья выражений.