Замок Виндзор Регистр с реализацией передан в конструктор - PullRequest
1 голос
/ 12 декабря 2011

В Castle Windsor я хочу, чтобы конкретная конкретная реализация передавалась в конструктор зарегистрированного класса контейнера.Примерно так (я знаю, что синтаксис в конце недопустим; -)):

var myConfig = new MyConfig();
container.Register(Component
  .For<IConnector>()
  .ImplementedBy<Connector>()
  .Parameters(myConfig));

Можно ли в любом случае передать myConfig при создании Connector?Возможно ли это?

(Connector имеет конструктор, который принимает MyConfig в качестве параметра)

1 Ответ

1 голос
/ 12 декабря 2011

Да, вы можете сделать это:

   container.Register(Component
  .For<IConnector>()
  .ImplementedBy<Connector>()
  .ServiceOverrides(
   ServiceOverride
  .ForKey("myConfig")
  .Eq("NameYouGaveMyConfigWhenRegisteringInCastle"));

ForKey ("...") - это точное имя параметра, передаваемого в Connector для MyConfig.

Уравнение ("...") - это имя, которое вы даете при регистрации MyConfig:

container.Register(Component
.For<IMyConfig>()
.ImplementedBy<MyConfig>()
.Named("config");

чтобы вы указали «config», где я набрал «NameYouGaveMyConfig ...»

...