gpt4 book ai didi

c# - Unity 依赖注入(inject)(构造函数或属性)

转载 作者:行者123 更新时间:2023-11-30 22:31:59 25 4
gpt4 key购买 nike

我在我的项目中使用 Unity 已有一段时间了。我有一个单例容器,我用它来注册类型和/或实例,然后再解析。

今天我想通过使用属性或构造函数注入(inject)来自动化一些实例化。

我从 Logger 类开始。在应用程序开始我有这个代码:

RegisterType<Logger, Logger>();

比在我的 ViewModel 中要好

[Dependency]
public Logger MyLogger {
get;
set;
}

下面是我如何实例化具有此属性的 View 模型(在 MainWindow.xaml.cs 中)

private void InitializeViewModel() {
_vm = new MainViewModel(MainGrid);
...
MyContainer.GetInstance().Container.RegisterInstance<MainViewModel>(_vm);

我无法让 [属性注入(inject)器] 工作。属性注入(inject)是否需要与构造函数配对?我已经在使用具有一些参数的构造函数..

最佳答案

你的例子有问题。如果您希望将 Logger 注入(inject)到 MainViewModel 中,您必须让容器为您创建 MainViewModel

但是,在您的代码中,您是自己创建的。在我看来,它应该是:

_vm = Container.Resolve<MainViewModel>();

或至少

_vm = new MainViewModel();
Container.BuildUp( _vm );

关于c# - Unity 依赖注入(inject)(构造函数或属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com