#c# #.net #design-patterns #dependency-injection #clean-architecture
Вопрос:
У меня проблема с двумя интерфейсами, вызывающими друг друга.
В моей модели каждый компонент может содержать сетку. И каждая сетка может содержать Компонент.
Я пытаюсь реализовать картограф для этой модели с помощью внедрения зависимостей.
public interface IComponent
{
//if we found a grid in the content, we should call Map method from IGrid
ComponentViewModel Map(IContent content);
}
public interface IGrid
{
//if we found a component in the content, we should call Map method from IComponent
GridViewModel Map(IContent content);
}
Но теперь у меня есть ошибка «Обнаружена рекурсивная зависимость».
Я исправил это, когда изменил его на статические классы, но я думаю, что это грязный хак.
Я также попытался использовать factory для создания экземпляра для этих интерфейсов в обоих методах.
var container = Current.Factory.Concrete as ServiceContainer;
var mapper = container.GetInstance<IComponent>();
Но это тоже не работает, потому что каждый экземпляр интерфейса ожидает, что в его конструктор придет экземпляр другого.
Какой шаблон я должен реализовать, чтобы сохранить DI в моем проекте?
Комментарии:
1. Один из способов решить эту проблему-передать фабрику компонентов в iGrid, а факторию сетки в IComponent.