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