gpt4 book ai didi

wpf - 不清楚如何实现依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-03 10:16:24 26 4
gpt4 key购买 nike

假设我有一个 LoginView,它的数据上下文 LoginViewModel 需要注入(inject)一个可以根据用户名/密码对用户进行身份验证的服务。

现在假设应用程序的状态是有人已经登录,但现在他们正在注销,我需要为下一个用户重新显示登录屏幕。所以此时我需要一个我的 LoginViewModel 的实例,但我不确定如何获取它。

我是否应该将 LoginViewModel 注入(inject)我的 ShellViewModel 并持有并重用它?这看起来很奇怪,因为我为什么要在不使用它的时候将它保存在内存中(当然,在这种情况下没什么大不了的,但可能适用于其他情况)。

我是否应该将身份验证服务注入(inject) ShellViewModel 以在需要创建 LoginViewModel 时保留?这看起来很奇怪,因为我的 ShellViewModel 不需要对这个服务做任何事情,如果这是答案,那么我会为它显示的所有其他 ViewModel 注入(inject)各种东西到我的 ShellViewModel 中。

而且我知道我不应该在我的应用程序根以外的任何地方引用我的 DI 容器,否则我将实现服务定位器模式。

诚然,我现在感觉很愚蠢,当我听到答案时,我敢肯定我会扇自己耳光……那是什么?

最佳答案

在这样的场景中,我通常会在您的情况下注入(inject)与 LoginViewModel 工厂相对应的内容。这样,您的逻辑可以根据需要制造一个新的(或可能由工厂缓存的)实例。

关于wpf - 不清楚如何实现依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631660/

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