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)
现在,我正在尝试为使用此列表的控件之一创建单元测试,而且我被卡住了.
我应该使用App
as参数进行构造函数注入(我使用Unity)吗?或者可能会介绍一些类来保存这个列表?
由于伪代码不完整,因此使用 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)
归档时间: |
|
查看次数: |
632 次 |
最近记录: |