Я новичок в инъекции зависимостей, и я пытаюсь решить проблему. У меня есть две службы. У каждой из этих служб есть методы, которые нуждаются друг в друге.Две службы зависят от eachother (исключение stackoverflow) - как решить?
Например: SiteManager
есть методы, в которых он нуждается в моем ForumManager
. У моего ForumManager
есть методы, где ему нужны мои SiteManager
.
У меня есть два класса:
public class SiteManager:ISiteManager
{
public IForumManager ForumManager { get; set; }
public SiteManager()
{
this.ForumManager = new ForumManager();
}
}
public class ForumManager:IForumManager
{
public ISiteManager SiteManager { get; set; }
public ForumManager()
{
this.SiteManager = new SiteManager();
}
}
Очень очевидно, что это приведет к исключению переполнения стека, как они называют друг друга. Я читал много сообщений здесь, и я думаю, что мне просто нужен небольшой намек на то, как это решить. У меня есть свои интерфейсы в их собственной сборке.
Я думал о размещении зависимостей в их собственном имуществе, поэтому, когда они используются, они сделаны. Однако, это лучшая практика?
Я не использую контейнер IoC (и я раньше этого не использовал).
Любые подсказки о том, как решить эту конкретную проблему в режиме «лучшей практики»! :-)
«* Менеджер», созданный без параметров, звучит как нечто маловероятное, чтобы потребовать несколько экземпляров. что делает их одноэлементными объектами и полностью обходит проблему? – Phoshi
Как насчет использования наследования имеют класс яслей, который имеет все ваши общие методы? – TheKingDave
Похоже, что у вас есть неуместная ответственность. Зачем нужно, чтобы ForumManager нуждался в ссылке на SiteManager? И наоборот? – MattDavey