繁体   English   中英

Castle.Windsor:ResolveAll名称

[英]Castle.Windsor: ResolveAll with name

我不熟悉IoC使用Castle.Windsor。 现在,我想注册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)吗?

提前致谢。 :)

您可以使用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")
);

这样,您可以在注册过程中自定义组件的创建。 您可以使用一系列操作,这些操作将在解析和将组件重新调整为代码之间应用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM