我正在寻找一种方法来注入依赖,而无需调用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
属性有关,但我不知道。
谢谢。
答案 0 :(得分:1)
查看各种MVVM框架,如Caliburn Micro:http://caliburnmicro.codeplex.com/其中大多数都带有IoC容器支持。
答案 1 :(得分:0)
某些容器(如Unity)具有为现有实例提供依赖关系的功能。当然,这不适用于construcor注入。但是它可以用于发现/方法注入。
您可以创建WPF页面(或任何控件),它将加载标记,然后调用Unity.BuildUp(your_object)。
或不同容器的等效功能。