我如何配置Unity在两个构造器中共享一个实例?

本文关键字:共享 构造器 实例 一个 两个 何配置 配置 Unity | 更新日期: 2023-09-27 17:50:04

假设我有以下类/构造函数:

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

我想有一个工厂,创建一个模型,一个控制器和一个视图模型使用相同的模型实例上的控制器和viewmodel。

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

编辑:

每次我想创建一个ViewModel时,我都想创建一个控制器和一个模型。所以1VM = 1C = 1M,模型在VM和c之间共享。

我如何配置Unity在两个构造器中共享一个实例?

不清楚你的视图模型和控制是如何相关的,所以很难看出如何解决一个将解决另一个。你可以尝试用两个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));
}