gpt4 book ai didi

C# MVVM 处理 UserID 并将其传递给不同的模型和 View 模型

转载 作者:行者123 更新时间:2023-12-02 19:57:13 25 4
gpt4 key购买 nike

我当前在应用程序中传递UserID 的实现是通过构造函数实现的。

SomeObject s = new SomeObject(userID)

其中有一段代码根据用户 ID 执行操作。通过添加另一个名为“CurrentUser”的属性来进一步跟踪 userID,但这似乎是一个肮脏的解决方案,因为我必须将它实现到所有 ViewModel,并且它似乎违反了“DRY”概念。

我想到的第二种方法是在我的 MainWindowViewModel 上创建一个公共(public)静态变量,其中我的所有其他模型都可以将其引用为 MainWindowViewModel.CurrentUser

这两种方法之一是执行此操作的正确方法还是有我不知道的更好方法?

最佳答案

您需要预先仔分割析您希望通过应用程序实现的目标。您对只有一位选定的客户感到满意吗?或者您是否需要同时查看或编辑多个客户端(即您有一个 MDI 样式应用程序)?

采用单一客户端方法很容易,您可以实现全局属性包,如其他答案中已经提到的。但我建议您谨慎行事:如果您构建应用程序时假设只有一个选定的客户端,那么它就成为真正的 PITA,需要尝试重构以使其具有多客户端功能。使用像这样的集中式属性包或“ session 服务”确实是从虚拟机中解耦状态,但随着时间的推移,集中式服务仍然会变成一个庞然大物,并且您对它建立了太多的依赖。

如果您确实想走多客户端路线,那么您就走在正确的道路上 - 但不是在构造函数中传递客户端标识符,而是传递(注入(inject))整个客户端数据对象。很可能您已经从调用面向客户端的 VM 的 UI 片段中获得了大部分客户端详细信息,因此将其传入并不必再次访问数据库来获取详细信息。

关于C# MVVM 处理 UserID 并将其传递给不同的模型和 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646603/

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