假设我有一个 LoginView 及其数据上下文 LoginViewModel,需要注入一个可以根据用户名/密码对用户进行身份验证的服务。
现在假设应用程序的状态是有人已经登录,但现在他们正在注销,我需要为下一个用户重新显示登录屏幕。所以此时我需要一个 LoginViewModel 的实例,但我不知道如何获取它。
我应该将 LoginViewModel 注入到 ShellViewModel 中并保留并重用它吗?这看起来很奇怪,因为为什么我想在不使用它的时候将其保留在内存中(当然,在这种情况下没什么大不了的,但对于其他情况可能是这样)。
我是否应该将身份验证服务注入 ShellViewModel 以便在需要创建 LoginViewModel 时保留?这看起来很奇怪,因为我的 ShellViewModel 不需要对此服务执行任何操作,如果这是答案,那么我将为其显示的所有其他 ViewModel 注入各种内容到我的 ShellViewModel 中。
我知道我不应该在应用程序根目录之外的任何地方引用我的 DI 容器,否则我将实现服务定位器模式。
不可否认,我现在感觉很愚蠢,我确信当我听到答案时我会打自己的脸......那么它是什么?
在这样的场景中,我通常会注入与您的情况下的 LoginViewModel 工厂相对应的内容。这样你的逻辑就可以根据需要制造一个新的(或者可能由工厂缓存的)实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)