Представьте себе, что я реализую шаблон проектирования цепочки ответственности в следующих классах:
interface IDoStuff
{
IDoStuff Next {get;}
void Configure();
}
class StepOne
{
public IDoStuff Next {get; set}
public StepOne(IDoStuff next)
{
Next = next;
}
public void Configure()
{
// Do configuration relevant to StepOne
// Call the next configure step in the chain
Next?.Configure()
}
}
class StepTwo
{
public IDoStuff Next {get; set}
public StepTwo(IDoStuff next)
{
Next = next;
}
public void Configure()
{
// Do configuration relevant to StepTwo
// Call the next configure step in the chain
Next?.Configure()
}
}
Я попытался настроить цепочку следующим образом
class MyRegistry : Registry
{
public MyRegistry()
{
For<IDoStuff>().Use<StepOne>();
For<StepOne>().Use(c => new StepOne(c.GetInstance<StepTwo>()));
For<StepTwo>().Use(c => new StepTwo(null));
}
}
Но вместо этого я получаю эту ошибку отStructureMap;
Обнаружены двунаправленные зависимости! Проверьте трассировку стека StructureMap ниже: 1.) IDoStuff (StepOne) 2.) новый StepOne ( По умолчанию IDoStuff ) 3.) StepOne 4.) Экземпляр IDoStuff (StepOne) 5.) Container.GetInstance ()
Как правильно зарегистрировать цепочку?