使用SimpleIoc将运行时参数传递给构造函数

时间:2014-06-24 08:59:00

标签: c# mvvm mvvm-light

Currenlty我正在使用MvvmLight的SimpleIoC,我无法弄清楚如何将构造函数参数提供给实现IMyService的类。我找到了以下SO线程MVVM SimpleIoc, how to use an interface when the interface implementation requires construction parameters,它表明我只需要在将实现注册到接口时传递构造函数参数,例如:

SimpleIoc.Default.Register<IMyService>(() => {
  return new MyServiceImplementation("Hello World");
});

但是,此注册位于ViewModelLocator类中,该类现在具有实际构造函数参数的知识。它不是“Hello world”,而是“Hi there”,但在编译时不知道。有没有办法在运行时传递构造函数参数?

目前我只看到两个选项:(1)在viewmodel中注册IMyService,或者(2)完全删除构造函数参数并提供需要设置的属性。这两个选项似乎都没有,所以我非常感谢有关如何将构造函数参数传递给MyServiceImplementation的任何建议。

1 个答案:

答案 0 :(得分:1)

从SO问题SimpleIoc - can it provide new instance each time required?我收集到来自MvvmLight的SimpleIoc就像是单例视图模型的存储库。因此,除了ViewModelLocator之外,为实现IMyService的实例提供构造函数参数也没有任何意义。

目前,我已经删除了构造函数参数(原始问题中的选项2),但将来我可能会切换到另一个库,例如Ninject。