Чтобы получить доступ к данным для нашей базы данных учетных записей, нам нужно пройти через сторонний 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 с уникальными требованиями к фильтрации.
Что я хотел бы сделать, так это использовать шаблон адаптера, чтобы поместить эти вызовы за мои собственные классы и вернуть объекты, которыми я владею. Затем я могу кодировать свои адаптеры из моей службы и позволить им беспокоиться о вызовах стороннего API.
Проблема в том, что я не знаю, как правильно обрабатывать все варианты фильтров, чтобы не просто воссоздать синтаксис фильтрации в своих адаптерах.
Я мог бы создать расширенные/статические методы, которые превращают систему фильтрации API в свободный синтаксис, и это могло бы выглядеть так:
customerCollection.Filter(“MasterCustomerId).Equals(masterCustomerId).Filter(SubCustomerId).Equals(subCustomerId).Fill();
Но что-то в этом просто кажется неправильным. Я чувствую, что возлагаю на службу слишком большую ответственность, чтобы делать все эти звонки.
Я усердно работаю над развитием своих объектно-ориентированных навыков, и я был бы признателен, если бы кто-нибудь помог указать мне правильное направление в этом вопросе.