1

Castle Windsor を初めて使用し、構成ファイルの順序について混乱しています。これは GettingStarted1 サンプルから取得したものです。HttpServiceWatcher クラスは、そのコンストラクターで IFailureNotifier 実装者を取ります。ただし、このインターフェイスを実装する 2 つのコンポーネント (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>
4

2 に答える 2

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

于 2010-01-24T19:46:54.700 に答える
0

お使いのバージョンはわかりませんが、これは少し前のバグで、ビルド サーバー バージョンでは修正されていると思います。それを試してみて、何が起こるか見てください。

また、次のようなデフォルト コンポーネントを使用することもできます: Castle Windsor とデフォルト コンポーネント

于 2008-12-18T18:48:07.960 に答える