说我有以下类/构造函数:
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之间共享。
答案 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));
}