小编our*_*ly6的帖子

使用 .Net 类库进行依赖注入?

我有一个执行大量文件 IO 的类库。测试有点困难,所以我想开始使用System.IO.Abstractions包。它有一个接口,您可以使用真实的文件系统或模拟的文件系统来实现。

因此,当代码在生产中运行时,我想要真正的文件系统,但在测试时我想模拟它。我的班级做 IO 的事情看起来像这样。

private readonly IFileSystem _fileSystem;

public Service(){
   _fileSystem = new FileSystem();  //In test we want Mock file system here
}

internal bool Run(){
   string[] sourceFilePaths = _fileSystem.Directory.GetFiles(_sourceDirectory, "*.xml", SearchOption.AllDirectories);
}
Run Code Online (Sandbox Code Playgroud)

现在我想使用依赖注入来填充 _fileSystem 实例以确定要使用的内容。问题是我不知道如何在类库中执行此操作。我找到了教程,但似乎库的使用者必须进行注入。我的问题是这个类库被打包上传到一个平台。在使用该包之前,该平台无法对该包执行任何操作。因此,图书馆必须以某种方式弄清楚要使用哪个实例。

我能想到的一种方法是使用调试符号,

#if DEBUG  #endif
Run Code Online (Sandbox Code Playgroud)

但当然它很混乱并且分散了配置。

在类库中使用 DI 的正确方法是什么?

c# dependency-injection

2
推荐指数
1
解决办法
1074
查看次数

标签 统计

c# ×1

dependency-injection ×1