Разрабатываю приложение, пытаюсь в нём следовать "чистой архитектуре" Роберта Мартина. Начал со слоя данных, добрался до проектирования удаленного источника данных, в нем имею такого рода код:
public override async Task<IList<Entity>> GetAsync(Expression<Func<Entity, bool>> expression = null)
{
}
где Expression это по сути "спецификация" т.е. обычный непримечательный код где на входе мы задаем лямбдой условие для выборки Entity, такой подход прекрасно работает для локального источника данных (БД), потому что скомпилированный Expression мы можем скормить DbContext-у, а дальше уже происходит EF-магия без нашего участия. Но вот проблема с внешним источником данных, в моем случае я должен в зависимости от Expression скомпоновать URL чтобы получить свои entities по условию, и что то я не могу придумать как это сделать, и пока не удается нагуглить какие есть инструменты для этого. Что можете посоветовать?
UPD Expression на входе:
var res = await remoteDataSource.GetAsync(z=> z.Address == EntityPlace.Moscow);
(для примера считайте что Address это строка)
То что хочу получить:
//В классе источнике данных
private static string UrlAddress = @"https://moi.address/?";
private const string UrlPlaceFilter = @"s%5Bplace%5D%5B0%5D=";
private List<string> UrlPlaces = new List<string>()
{
"Moscow",
"London",
"Paris"
};
public override async Task<IList<Entity>> GetAsync(Expression<Func<Entity, bool>> expression = null)
{
//z=> z.Address == EntityPlace.Moscow
//на основе этого условия нам нужна строка URL
//https://moi.address/?s%5Bplace%5D%5B%5D=Moscow
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть у меня класс с полем Commisioning, Commisioning имеет 3 значения:
Помогите пожалуйста разобраться в применении EventHandlerЯ написал для проверки простую консольную программу:
В данный момент для прочитывания файла используется StremReader