Castle Windsor IOC和配置文件中的外观顺序

时间:2008-12-18 18:25:13

标签: castle-windsor

我是Castle Windsor的新手,对配置文件中的顺序感到困惑。这取自GettingStarted1示例。 HttpServiceWatcher类在其构造函数中使用IFailureNotifier实现者。但是,无论我如何订购实现此接口的两个组件 - AlarmFailureNotifier和EmailFailureNotifier - 我总是得到EmailFailureNotifier。我知道你可以覆盖使用参数和“服务查找”引用选择的内容,但我认为当其他机制不是时,会使用声明的顺序。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="castle"
             type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler,Castle.Windsor" />
  </configSections>

  <castle>
    <components>

      <component
        id="httpservicewatcher"
        type="GettingStartedPart1.HttpServiceWatcher, GettingStartedPart1">
      </component>

      <component
        id="alarm.notifier"
        service="GettingStartedPart1.IFailureNotifier, GettingStartedPart1"
        type="GettingStartedPart1.AlarmFailureNotifier, GettingStartedPart1" />

      <component
        id="email.notifier"
        service="GettingStartedPart1.IFailureNotifier, GettingStartedPart1"
        type="GettingStartedPart1.EmailFailureNotifier, GettingStartedPart1" />

      <component
        id="form.component"
        type="GettingStartedPart1.Form1,GettingStartedPart1" />

    </components>

  </castle>
</configuration>

2 个答案:

答案 0 :(得分:1)

这是通过Castle 2.0解决的(去年年初推出了RTM)。

最新版本的Castle是2.1.1:

http://sourceforge.net/projects/castleproject/files/InversionOfControl/2.1/Castle-Windsor-2.1.1.zip/download

Castle的发布总是有点棘手(他们需要更新他们的网站)。我总是参考项目清单:

http://www.castleproject.org/castle/projects.html

你想:MicroKernal / Windsor

答案 1 :(得分:0)

我不知道您使用的是哪个版本,但我相信这是一段时间前的错误,并且已在构建服务器版本中得到纠正。尝试一下,看看会发生什么。

此外,您可以使用以下默认组件:Castle Windsor and default components