Castle Windsor注册构造函数中传递的实现

时间:2011-12-12 17:50:43

标签: c# .net castle-windsor castle

在Castle Windsor中,我希望将一个特定的具体实现传递给容器注册类的构造函数。像这样的东西(我知道语法最后是非法的; - )):

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

在创建连接器时,我是否可以传入myConfig?这可能吗?

(连接器有一个以MyConfig作为参数的构造函数)

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做:

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

ForKey(“...”)是传递给Connector for MyConfig的参数的确切名称。

Eq。(“...”)是您注册MyConfig时的名称:

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

所以你输入“config”我输入“NameYouGaveMyConfig ...”