如何配置Unity以在两个构造函数中共享实例?

时间:2014-03-12 15:50:42

标签: c# .net dependency-injection unity-container

说我有以下类/构造函数:

public class Model {} // Parameterless constructor here
public class Controller { public Controller(Model model) {} }
public class ViewModel { public ViewModel(Model model) {} }

我想让一个工厂在Controller和ViewModel上使用相同的模型实例创建一个模型,一个控制器和一个viewmodel。

如何配置Unity在工厂中使用它,以便在两个构造函数中使用相同的实例?

编辑:

每次我想创建一个ViewModel时,我想创建一个Controller和一个Model。因此1VM = 1C = 1M,并且模型在VM和C之间共享。

1 个答案:

答案 0 :(得分:2)

目前还不清楚你的视图模型和控件是如何相关的,因此很难看出如何解决一个人将解决另一个问题。您可以尝试的是具有两个out参数和注入构造函数的工厂。

// However you decide to setup your factory method
public static void CreateViewModelAndController(
    out ViewModel viewModel, 
    out Controller controller, 
    IUnityContainer unityContainer)
{
    Model model = unityContainer.Resolve<Model>();
    viewModel = unityContainer.Resolve<ViewModel>(new InjectionConstructor(model));
    controller = unityContainer.Resolve<Controller>(new InjectionConstructor(model));
}