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

时间:2011-12-07 09:37:52

标签: c# wpf dependency-injection structuremap

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

我正在使用StructureMap并希望将我的IMyUser实现传递给我的ViewModels构造函数(构造函数DI)。我的问题是,如果我将我的IMyUser实现传递给构造函数,我应该在哪里进行结构图的初始化?

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

如果这不是使用IMyUser和DI的正确方法,请提供建议,我们也非常感谢备选方案。

1 个答案:

答案 0 :(得分:4)

由于这是关于授权的问题,我认为通过自定义IPrincipal实施可以更好地处理。

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

当用户登录并收到许可证信息时,请替换或更新Thread.CurrentPrincipal以授权用户使用该应用程序。

这是环境上下文模式的示例。您不需要在此交互中涉及StructureMap。