У меня есть список Funcs, который содержит типы и их аргументы, которые мне нужно зарегистрировать в контейнере:
var LogCreaters = new List<Func<ILogFormat, FolderLocation, ILogWriter>>
{
(fmt,path)=> new NlogWriter(new NlogConfiguration(fmt,path.logging)),
(fmt,path)=> new DisplayWriter(fmt)
}
Вот как я пытаюсь зарегистрировать коллекцию:
container.Collection.Register<ILogWriter>(LogCreaters);
Далее:
foreach (var item in LogCreater)
{
container.Collection.Append<ILogWriter>(
() => item(LogFormat, FolderLocation), LifeSpan.Scoped);
}
Но container.Verify()
выдает следующее исключение:
Конфигурация недопустима. Не удалось создать экземпляр для типа Logger. Конструктор типа NlogWriter содержит параметр с именем 'config' и типом NlogConfiguration, но NlogConfiguration не зарегистрирован. Чтобы разрешить NlogConfiguration, он должен быть зарегистрирован в контейнере.
Я предполагаю, что тип NlogWriter
зарегистрирован в контейнере, но его аргументы конструктора не регистрируются в обработать. Как я смогу зарегистрировать LogCreators
вместе с их конструкторами и типами в аргументах конструктора контейнера в моем текущем сценарии.
Недавно я задал этот вопрос о том, как зарегистрировать коллекцию, в которой был дан ответ на мой вопрос, но я думаю, что не смог правильно объяснить свой текущий сценарий, поэтому я публикую это снова с более подробной информацией.
TIA.