使用依赖注入将应用程序中的词典保存在何处

use*_*618 5 c# dependency-injection legacy-code inversion-of-control

我有一个遗留代码,我有重构器的问题.

在我的应用程序开始时,我从WCF属性加载App(这是SL应用程序)用户列表.

然后,每个控件(用于发送电子邮件,查看日历和分配任务)都使用此属性

(App.Current as App).Users
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试为使用此列表的控件之一创建单元测试,而且我被卡住了.

我应该使用Appas参数进行构造函数注入(我使用Unity)吗?或者可能会介绍一些类来保存这个列表?

Jim*_*mmy 4

由于伪代码不完整,因此使用 OP 的实现进行了更新。

我建议为您的所有应用程序服务创建一个接口

将 IApplicationService 注入到您的模块中。

您可以将此接口用于应用程序提供的所有服务(可能您需要更多)。模拟单元测试的接口

OP的实施

 public interface IApplicationService
    {
        List<User> Users{get;set;}
    }

    public class ApplicationService : IApplicationService
    {
        public List<User> Users
        {
            get { return (App.Current as App).Users; }
            set { (App.Current as App).Users = value; }
        }
    }

    public partial class MainWindow : UserControl
    {
        readonly IApplicationService _applicationService
        public MainWindow(IApplicationService applicationService)
        {
            _applicationService=applicationService;
        }
    }
Run Code Online (Sandbox Code Playgroud)