Вот пример.
foreach (var doc in documents)
{
var processor = this.factory.Create();
processor.Process(doc);
}
factory
внутренне вызывает kernel.Get<IDocumentProcessor>()
.
Я бы хотел, чтобы время жизни всех зависимостей обработчика документов было "ограничено" этим корневым каталогом композиции. Эта конфигурация, кажется, делает то, что я хочу:
kernel.Bind<IEntityContext>().To<EntityContext>().InCallScope();
Теперь каждый граф объектов, укорененный в процессоре документов, имеет уникальный общий контекст сущности для доступа к базе данных. Но это
- влияет на все контексты сущностей во всем приложении (что может быть в порядке, но кажется трудно обнаружить), и
- только кажется, что работает для привязок, известных о статически.
Я думаю, что мой вопрос в том, как я могу добиться того же эффекта определения объема / управления временем жизни с помощью "контекстной" или динамической информации? Возможно, я хочу, чтобы сам экземпляр документа внедрялся во всех дочерних элементов нового корня:
var processor = this.factory.Create(doc)
processor.Process()
Спасибо!