0

我是 IoC 的新手,我正在尝试遵循最佳实践来应用它。我有一个 ListViewModel,我想从中创建一个新的 EditViewModel,它接受必须修改的对象的注入。

我认为解决方案可能是将包含此对象的消息发送到 IoC 容器,然后将其传递给 EditViewModel。

我可以做吗?有没有更好的办法?

非常感谢你!

4

1 回答 1

1

如果您希望您的视图模型创建其他视图模型,那么您需要创建一个视图模型工厂。您ListViewModel会将此视图模型工厂作为依赖项(例如通过构造函数注入),然后当它想要创建编辑视图模型时,它可以执行以下操作:

var editViewModel = this.EditViewModelFactory.Create(modelToEdit);

或者

var editViewModel = this.EditViewModelFactory.Create();
editViewModel.SetModel(modelToEdit);

您希望通过 IoC 容器解析编辑视图模型工厂。Castle Windsor 和 Ninject 等容器允许自动工厂注册。在这种情况下,您只需为工厂定义接口,容器实际上会为您实例化一个实现该接口的类型。

您当然不希望您的应用程序通过中介与您的容器通信。

于 2012-08-25T15:06:40.940 回答