0

我已经下载并运行了该示例并了解了大多数内容,除了我无法弄清楚 CategoryEditorViewModel 类从哪里获取它的构造函数参数。它是“ICategoryRepository categoryRepository”,我搜索了参考资料,但仍然无法理解创建视图模型时参数的传递方式和位置。我希望有人能帮我解答。

4

1 回答 1

1

我也有同样的问题。

据我从线程中发现的

具有多个参数的构造函数

更多的是,在 bootstrap.cs 文件的 Apuntas Notas 项目中,接口 ICategoryRepository 注册到类 CategoryRepository。

因此,当属性CategoryEditor尝试通过以下方式解析 ViewModelLocator.cs 中的实例时

        public CategoryEditorViewModel CategoryEditor
    {
        get { return _bootStrapper.Container.Resolve<CategoryEditorViewModel>(); }
    }

并且实例不存在,它尝试CategoryEditorViewModel使用其唯一需要ICategoryRespository接口的构造函数创建该类的对象。

正如我之前提到的,我们在 bootstrap.cs 文件中使用CategoryRepository类注册了这个接口。因此,它创建了一个 CategoryRepository 对象并将其传递给视图模型构造函数。

希望这可以消除您的疑问。

哦,如果你想知道如果你有多个构造函数会发生什么,你可以通过在 bootstrap.cs 中注册一个你喜欢的来注册一个类似的东西

Container.RegisterType<CategoryEditorViewModel>(new InjectionConstructor(typeof(ICategoryRepository), 5));

现在,如果您在 CategoryEditorViewModel 中有另一个构造函数还需要一个 int,则将调用该构造函数,而不是之前的构造函数。(传递一个 5 的 int 值非常愚蠢,但希望你能明白,你可以在那里为你的首选构造函数提供参数的类型,并确保它们也在引导容器中注册)

于 2013-01-06T22:06:20.013 回答