适用于WPF的DI工厂

时间:2013-01-26 16:08:36

标签: c# wpf dependency-injection ninject

我正在寻找一种方法来注入依赖,而无需调用Ninject的Get方法。

例如,在ASP.NET MVC中,我创建了一个继承自DefaultControllerFactory MSDN 的类,并使用ControllerBuilder.Current.SetControllerFactory <将其添加到控制器构建器的工厂中SUP> MSDN 。一旦我这样做,我就不会打电话给Get,它会自动填写。

是否有WPF的等效文件?

我需要一个适合大多数情况的一般答案,但如果我必须举一个例子,我在WPF中制作了一个控件, 但是它在构造函数中有一个参数:

public AppVolumeSlider(IVolumeSetter volumeSetter) 

由于我的控件是标记,WPF当然会抱怨:The type "AppVolumeSlider" does not include any accessible constructors.

如何让Ninject / WPF正确填充?

注1:如果我在这个例子中不能这样做(我猜是因为标记)请给我一个总答案。例如,如果我只是使用类似的构造函数而不是控件创建一个类。我仍然需要知道这些信息。

注2:我预感这可能与Inject属性有关,但我不知道。

谢谢。

2 个答案:

答案 0 :(得分:1)

查看各种MVVM框架,如Caliburn Micro:http://caliburnmicro.codeplex.com/其中大多数都带有IoC容器支持。

答案 1 :(得分:0)

某些容器(如Unity)具有为现有实例提供依赖关系的功能。当然,这不适用于construcor注入。但是它可以用于发现/方法注入。

您可以创建WPF页面(或任何控件),它将加载标记,然后调用Unity.BuildUp(your_object)。

或不同容器的等效功能。