Чтобы получить доступ к данным для нашей базы данных учетных записей, нам нужно пройти через сторонний API, который является просто еще одной сборкой, добавленной в качестве ссылки на наше решение.
В нашей службе есть несколько типоввызовов API, которые выглядят примерно так:
ICustomers customerCollection =GetCollection(OrgId,OrgUnit,CustomerInfo, "Customers");
{
customerCollection.Filter.Add("MasterCustomerId", QueryOperatorEnum.Equals, masterCustomerID);
customerCollection.Filter.Add("SubCustomerId", QueryOperatorEnum.Equals,subCustomerID);
}
customerCollection.Fill();
После вызова customerCollection.Fill()
API выходит в базу данных и запускает запрос с соответствующими фильтрами.Возвращенные объекты принадлежат API.В этом сервисе есть много вызовов API, все с уникальными требованиями к фильтрации.
Я хотел бы использовать шаблон Adapter, чтобы поместить эти вызовы в мои собственные классы и вернуть принадлежащие мне объекты.Затем я могу написать код для моих адаптеров из моего сервиса и позволить им беспокоиться о вызове стороннего API.
Проблема в том, что я не знаю хорошего способа справиться со всеми вариантамифильтры, так что я не просто воссоздаю синтаксис фильтрации в своих адаптерах.
Я мог бы создать методы расширения / статики, которые превращают систему фильтрации API в плавный синтаксис, поэтому он может выглядеть следующим образом:
customerCollection.Filter(“MasterCustomerId).Equals(masterCustomerId).Filter(SubCustomerId).Equals(subCustomerId).Fill();
Но что-то в этом кажется неправильным.Я чувствую, что слишком много ответственности предоставляю службе, чтобы выполнять все эти вызовы.
Я усердно работаю над развитием своих объектно-ориентированных навыков, и я был бы признателен, если бы кто-то мог помочь мне правильно указатьнаправление по этому вопросу.