2

我正在寻找一种无需调用 Ninject 方法即可注入依赖项的Get方法。

例如,在 ASP.NET MVC 中,我创建了一个继承自DefaultControllerFactoryMSDN的类,并将其添加到带有ControllerBuilder.Current.SetControllerFactoryMSDN的控制器构建器的工厂中。一旦我这样做了,我就再也不会打电话了Get,它会自动填写。

WPF是否有等价物?

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

public AppVolumeSlider(IVolumeSetter volumeSetter) 

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

如何让 Ninject/WPF 适当地填充它?

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

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

谢谢你。

4

2 回答 2

1

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

于 2013-01-26T18:25:42.680 回答
0

一些容器,如 Unity,具有为现有实例提供依赖项的功能。当然,这不适用于构造函数注入。但它可以用于属性/方法注入。

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

或不同容器的等效功能。

于 2013-01-26T18:52:49.607 回答