У меня есть коммерческое приложение, asp.net mvc.
Я хочу, чтобы он был расширяемым в том смысле, что другие могут создавать других поставщиков платежей, если они придерживаются интерфейсов.
/blah.core
/blah.web
/blah.Authorize.net (Implementation of a payment provider using interfaces Ipaymentconfig and paymentdata class)
Теперь проблема заключается в следующем:
/blah.core
- PaymentData
/blah.core.interfaces
- IPaymentConfig
где данные платежа выглядят так:
using blah.core;
public class PaymentData
{
public Order Order {get;set;}
}
Данные IPayment содержат классы из blah.core, такие как класс Order.
Теперь я хочу использовать реальную реализацию Authorize.net, поэтому, когда я попытался сослаться на нее в проекте blah.core, я получил ошибку circular dependency
.
Как я мог решить эту проблему? Многие говорят, что нужно разбить интерфейсы на свой собственный проект, , но проблема в том, что PaymentData ссылается на сущности, которые можно найти в blah.core также , так что, похоже, не существует способа обойти это (в моем в любом случае).
Как я могу изменить это?