Castle Windsor IOC: передача параметров конструктора дочерним компонентам

Следующий код предназначен только для демонстрационных целей.

Допустим, у меня есть 2 компонента (бизнес-служба и служба данных) и класс пользовательского интерфейса.

] Классу UI нужен бизнес-сервис, бизнес-сервису - dataService, а dataService полагается на connectionString.

Сформируйте класс пользовательского интерфейса, который мне нужен для разрешения бизнес-службы, поэтому я пишу следующий код:

var service = container.Resolve<BusinessService>(new { dependancy = "con string 123" }));

обратите внимание, что зависимость - это параметр конструктора connectionString.

Но приведенный выше код не работает, говоря, что dataService ожидает зависимость, которая не была удовлетворена.

Не удается создать компонент dataService. поскольку у него есть зависимости, чтобы быть доволен. dataService ждет следующие зависимости:

Ключи (компоненты с определенными ключами) - зависимость, которая не была зарегистрирована.

В качестве обходного пути я делаю следующее:

var service = container.Resolve<BusinessService>(new { dataService = container.Resolve<IDataService>(new { dependancy = "123" }) });

Но с точки зрения дизайна, стиля кодирования и многих точек зрения это не лучший способ сделать это.

Так что, пожалуйста, если вы можете посоветовать почему это не работает простым способом или у вас есть лучший способ обхода, поделитесь.

6
задан Moutasem al-awa 11 October 2010 в 09:23
поделиться