Есть ли какой-то сокращенный интерфейс для создания словаря параметров, который будет предоставлен методу IWindsorContainer.Resolve()? Что-то типа:
container.Resolve<ConsoleApp>(Parameters.Add("args", args).Add("banana", X).Add...)
Есть ли какой-то сокращенный интерфейс для создания словаря параметров, который будет предоставлен методу IWindsorContainer.Resolve()? Что-то типа:
container.Resolve<ConsoleApp>(Parameters.Add("args", args).Add("banana", X).Add...)
Вы также можете передать анонимный объект в качестве параметра:
container.Resolve<ConsoleApp>(new { args, banana = X });
Чтобы ответить на мой собственный вопрос: похоже, я забыл об инициализаторах коллекций:
container.Resolve<ConsoleApp>(new Hashtable(){{"args", args}});
По состоянию на 2021 год для этого есть гораздо более безопасный и удобный API — класс Arguments.
Вы можете использовать его следующим образом:
var arguments = new Arguments
{
{ "args", args },
{ "banana", X },
{ typeof(IService), new MyService() }
};
container.Resolve<ConsoleApp>(arguments);
Также есть Fluent API:
var arguments = new Arguments()
.AddNamed("args", args)
.AddTyped<IService>(new MyService());
container.Resolve<ConsoleApp>(arguments);
Вот ссылка: https://github.com/castleproject/Windsor/blob/master/docs/arguments.md