c# - 存储一个没有服务定位器的 Unity 依赖注入容器
问题描述
我有一个对硬件系统有很多外部依赖的应用程序。我想对与这些硬件系统交互的服务进行单元测试,因此我将每个服务的外部部分抽象化,以便可以在单元测试中将其替换为 Mock。在单元测试中,我将外部依赖项注入到服务的构造函数中。
在我的生产代码中,我有一个中心位置来注册所有外部依赖项。像这样的东西:
public class DependencyContainer : UnityContainer
{
private static DependencyContainer instance;
public static DependencyContainer Instance
{
get
{
if (instance == null)
instance = new DependencyContainer();
return instance;
}
}
private DependencyContainer() : base()
{
RegisterTypes();
}
private void RegisterTypes()
{
this.RegisterSingleton<IExternalService1, ExternalService1>();
this.RegisterSingleton<IExternalService2, ExternalService2>();
this.RegisterSingleton<IExternalService3, ExternalService3>();
}
}
这只是伪装的服务定位器反模式还是注册我的依赖项的合理方式?
解决方案
推荐阅读
- node.js - 为什么 setImmediate() 总是在 I/O 回调 [NodeJS] 中的 setTimeout() 之前运行?
- electron - 如何创建不可调整大小的 100% 屏幕(非全屏)BrowserWindow
- postgresql - Perl dbi 运行 psql 代码
- android - 子项在父视图之外不可点击
- spring-mvc - 从多个应用服务器运行的 Spring Poller
- laravel - Laravel 5.3 API 在服务器上使用 JavaScript 时未获取数据
- php - apache solr 5.3.0 多核搜索
- google-chrome-extension - chrome扩展launchWebAuthFlow错误
- python - 使用 win32api 在内存对象中打印
- keras - keras 中的 preprocess_input 大大增加了火车的大小