C#のWindsor Inversion of Control (IoC) Getting Started exampleに従っていますが、VB.Net で実装していて、小さな問題が発生しました。
これが私が完全に取得している例外です:
満たすべき依存関係があるため、コンポーネント 'form.component' を作成できません。form.component は次の依存関係を待機しています:
サービス: - 登録されていない InversionOfControl.HttpServiceWatcher&。
しかし、私はそれを登録していると思います-それは登録された最初のものです!
VB 8 (Visual Studio 2005 / .Net 2.0) とWindsor 1.0 RC3を使用しています。
ここに私のApp.vb があります:
Castle.Windsor をインポートします。 パブリック クラス アプリ Public Shared Sub Main() Dim コンテナー As New WindsorContainer 'コンポーネントを登録する container.AddComponent("httpservicewatcher", _ GetType(HttpServiceWatcher)) container.AddComponent("email.notifier", GetType(IFailureNotifier), _ GetType(EmailFailureNotifier)) container.AddComponent("alarm.notifier", GetType(IFailureNotifier), _ GetType(AlarmFailureNotifier)) container.AddComponent("form.component", GetType(Form1)) 'コンテナからコンポーネントをリクエスト Dim aForm As Form = container(GetType(Form1)) 'これを使って! Application.Run(フォーム) 'それを解放 container.Release(フォーム) サブ終了 クラス終了
フォーム1
パブリック クラス Form1 HttpServiceWatcher としてのプライベート oServiceWatcher Sub New (ByRef ServiceWatcher As HttpServiceWatcher) ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後に初期化を追加します。 Me.oServiceWatcher = ServiceWatcher サブ終了 クラス終了
HttpServiceWatcher
パブリック クラス HttpServiceWatcher IFailureNotifier としてのプライベート oNotifier Sub New (ByRef Notifier As IFailureNotifier) oNotifier = 通知者 サブ終了 サブ StartWatching() ' サービスを ping するスレッドを開始する必要があります 'if (pingresult = 失敗) oNotifier.Notify() '終了する場合 サブ終了 サブストップウォッチング() 'スレッドを停止 サブ終了 クラス終了
IFailureNotifier
パブリック インターフェイス IFailureNotifier サブ通知() 終了インターフェイス
AlarmFailureNotifierとEmailFailureNotifierはどちらも IFailureNotifier を実装していますが、Notify()
メソッドは空です
IFailureNotifier を最初に、HttpServiceWatcher を 3 番目に、Form を最後に配置して順序を変更しようとしましたが、同じエラーが発生します。
クリーンアップと再構築を行いましたが、同じエラーが発生します。
私は明らかにこれに慣れていません(「はじめに」を行っているため)、見逃したことを指摘していただけますか?
ありがとうございます:o)