我正在关注 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
公开课应用
公共共享子 Main()
昏暗容器作为新的 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))
'用它!
应用程序.Run(aForm)
'释放它
容器.Release(aForm)
结束子
结束类
表格1
公开课形式1
私有 oServiceWatcher 作为 HttpServiceWatcher
Sub New(ByRef ServiceWatcher As HttpServiceWatcher)
' Windows 窗体设计器需要此调用。
初始化组件()
' 在 InitializeComponent() 调用之后添加任何初始化。
Me.oServiceWatcher = ServiceWatcher
结束子
结束类
HttpServiceWatcher
公共类 HttpServiceWatcher
私有 oNotifier 作为 IFailureNotifier
Sub New(ByRef Notifier As IFailureNotifier)
oNotifier = 通知者
结束子
子开始观看()
'应该启动一个线程来ping服务
'如果(pingresult = 失败)
oNotifier.Notify()
'万一
结束子
子秒表()
'停止线程
结束子
结束类
IFailureNotifier
公共接口 IFailureNotifier
子通知()
端接口
AlarmFailureNotifier和EmailFailureNotifier都实现了 IFailureNotifier 但Notify()方法为空
我尝试通过将 IFailureNotifier 放在第一个、HttpServiceWatcher 3rd 和 Form 最后来更改顺序,但我得到了同样的错误。
我已经完成了清理和重建,但我得到了同样的错误。
我显然对此很陌生(因为我正在经历“入门”),你能指出我错过了什么吗?
谢谢 :o)