一个很好的TDD友好的.NET文件IO库

Geo*_*uer 5 .net file-io open-source

正如你们许多人所知,System.IO命名空间是非常糟糕的设计.我想要一个免费的库,以一种理智的方式包装文件IO功能(读取:不要求你在整个地方传递字符串).我记得前一段时间读过这些库中已经写了一小部分(并且作者对此没有更多感到惊讶).我认为这是devliciouscodebetterLos Techies的其中一个做过其中一个的人.

有谁知道我在说什么或另一个好的文件IO包装?

编辑:我想我应该指定我做测试驱动开发,我的担忧主要(但不完全)围绕System.IO的测试友好性.

Joh*_*ers 3

System.IO.FileInfo 有什么问题?


我很好奇,所以开始使用 ReSharper 创建一组包装器。我花了16分钟,没有测试过,不知道是否满足你的需求。尽管如此,我还是想概述一下我使用的过程:

  1. 创建一个新的类库项目
  2. 将 Class1 公开并将其重命名为 FileSystemInfoWrapper
  3. 给它一个 FileSystemInfo 类型的私有字段 _fsi (解析该类以获取导入的命名空间)
  4. 单击该字段并选择在构造函数中初始化
  5. 再次单击该字段并使用 ReSharper -> 代码 -> 生成 (Alt+Ins);选择生成委派成员;点击“公开”即可获取所有公开成员
  6. 与 FileInfo 相同,但也从 FileSystemInfoWrapper 派生并删除重复的成员(ReSharper 在这里可以做得更好)
  7. DirectoryInfo 相同,但也派生自 FileSystemInfoWrapper 并修复重复项
  8. 对于每个包装器,单击类,然后使用 ReSharper->Refactor->Extract Interface
  9. 让 IFileInfoWrapper 和 IDirectoryInfoWrapper 从 IFileSystemInfoWrapper 派生,并删除重复项。

结果是包含相应类的方法和属性的接口,以及委托给原始类并实现接口的具体类。然后,您应该能够创建自己的模拟类,并更改代码以使用接口,而不是直接使用 System.IO 具体类。