温莎城堡:注册多种类型

时间:2011-05-14 17:20:54

标签: .net castle-windsor design-patterns castle

假设我有几个实现接口的类:IFileDownloader。

如果我单独注册一个组件,一切都很好:

kernel.Register(Component.For<IFileDownloader>().ImplementedBy<HttpFileDownloader>());

但是,如果我尝试注册实现该接口的所有组件,它似乎没有注册它们:

kernel.Register(AllTypes.FromThisAssembly().BasedOn<IFileDownloader>());

我必须遗漏一些明显的东西。

非常感谢, -Alex

1 个答案:

答案 0 :(得分:4)

可能有两个原因导致您的注册无法按预期工作

  1. 你的课程是内部的,温莎会忽略它们。
  2. 您没有指定要使用IFileDownloader服务注册它们。我想你所追求的是:

    kernel.Register(AllTypes.FromThisAssembly()
      .BasedOn<IFileDownloader>()
      .WithService.Base());