依赖注入(DI)的最佳方法

本文关键字:最佳 方法 DI 注入 依赖 | 更新日期: 2023-09-27 18:16:56

我在WPF中开发一个桌面应用程序,它依赖于一个web服务来登录和获取许可信息。这意味着用户登录后,我构建一个客户端(在我的桌面应用程序中)对象,其中包含许可和登录日期等。

我使用StructureMap,并希望通过我的IMyUser实现到我的ViewModels构造函数(构造函数DI)。我的问题是,我应该把我的结构映射的初始化,如果我传递我的IMyUser实现到构造函数?

我认为在我登录并创建了IMyUserObject后,我可以配置StructureMap并将其传递给我的用户对象的实例。这在我的应用程序中有点"晚"(通常我把它放在我的app类中,所以它在我的应用程序中作为第一件事运行)。

如果这不是使用IMyUser和DI的正确方法,请建议,也非常感谢其他解决方案。

依赖注入(DI)的最佳方法

由于这是一个关于授权的问题,我认为由自定义IPrincipal实现来处理要好得多。

当应用程序启动时,分配一个实现给Thread.CurrentPrincipal。这个初始实例不应该授权用户。

当用户已登录并收到license信息时,替换或更新Thread。CurrentPrincipal授权用户使用该应用程序。

这是一个Ambient Context模式的例子。在这种交互中不需要涉及StructureMap。