我是使用Castle.Windsor进行IoC的新手。现在,我想注册UI元素以插入主窗体(SWF)中的某些点。因此,我有树节点来注入这些元素,例如Application.MainWindow.Navigation.MyModule。使用
container.Register(Component
.For<System.Windows.Forms.Control>()
.ImplementedBy<MyControlClass>()
.Named("Application.MainWindow.Navigation.MyModule") // this is the plug-in path
.LifestyleTransient());
应该在此之前完成。
在应用程序主窗体中,我需要访问容器内的控件并评估它们存储的路径。但据我所知,通过迭代
container.ResolveAll<Control>()
我不会将路径设置为每个UI元素的名称。
有没有办法访问路径或甚至更好的方法来实现这一点(使用Castle)?
提前致谢。 :)
答案 0 :(得分:0)
您可以使用OnCreate
自定义Castle.Windsor创建组件的方式
您可以为名为MyControlClass
的类Path
定义一个属性,并像这样初始化它(伪代码)
container.Register(Component
.For<System.Windows.Forms.Control>()
.ImplementedBy<MyControlClass>()
.Named("Application.MainWindow.Navigation.MyModule") // this is the plug-in path
.LifestyleTransient()
.OnCreate((myControlClass) => myControlClass.Path = "Application.MainWindow.Navigation.MyModule")
);
这样您就可以在注册期间自定义组件的创建。您可以使用将在解决方案之间应用的操作列表,并将组件重新调整为代码