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

本文关键字:构造函数 参数传递 运行时 SimpleIoc 使用 | 更新日期: 2023-09-27 18:09:58

目前我正在使用来自MvvmLight的SimpleIoC,我无法弄清楚如何为实现IMyService的类提供构造函数参数。我发现了下面的SO线程MVVM SimpleIoc,如何使用接口时,接口实现需要构造参数,它建议我只需要传递构造函数参数时,注册实现接口,例如

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

然而,这个注册位于ViewModelLocator类中,它现在已经知道了实际的构造函数参数。而不是"Hello world",它可能是"Hi there",但这是不知道在编译时。有没有办法在运行时传递构造函数参数?

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

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

从SO问题SimpleIoc -它可以提供新的实例每次需要?我从MvvmLight收集到SimpleIoc就像一个单例视图模型的存储库。因此,除了在ViewModelLocator中,为实现IMyService的实例提供构造函数参数没有任何意义。

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