У меня есть приложение, которое использует обработку IPaymentService
для обработки платежей по кредитной карте. Соответствующая реализация (CreditCardPaymentComponent
или CheckPaymentComponent
или что-либо еще, что реализует интерфейс IPaymentService
) вводится в приложение посредством PaymentProvider
с использованием ASP.NET Provider Model.Применение принципа инверсии зависимостей с моделью поставщика ASP.NET
Нам также нужны эти компоненты для повторного использования для различных приложений, которые могут не иметь доступа к PaymentProvider
.
Вопрос в том, где положить интерфейс IPaymentService
? Он не может быть внутри приложения, потому что есть несколько приложений, которые должны использовать эту услугу. Он не может быть внутри службы, потому что есть несколько служб, которые реализуют этот интерфейс. Я не люблю помещать интерфейсы в свой собственный проект, потому что тогда мне приходится добавлять ссылки везде. Есть ли другое решение?
EDIT: Чтобы уточнить, точку с помощью поставщика модели так мы можем поддержать других разработчиков, чтобы они могли написать, например CustomPaymentComponent
, который реализует IPaymentService
и это работает легко с нашим приложением. Я склоняюсь к ответу @ Frazell, но мне просто интересно, есть ли недостаток, чтобы положить IPaymentService
в ту же самую сборку с PaymentComponent
s? Если бы вам пришлось разработать CustomPaymentComponent
для этой системы, что бы вам больше всего понравилось?
диаграмма - упрощение; у меня на самом деле есть 25-30 различных PaymentComponents, поэтому я не думаю, что адаптер является опцией – jackvsworld
В этом случае либо используйте динамический, либо поместите интерфейс в общую сборку. – Steven