正如你们许多人所知,System.IO命名空间是非常糟糕的设计.我想要一个免费的库,以一种理智的方式包装文件IO功能(读取:不要求你在整个地方传递字符串).我记得前一段时间读过这些库中
有谁知道我在说什么或另一个好的文件IO包装?
编辑:我想我应该指定我做测试驱动开发,我的担忧主要(但不完全)围绕System.IO的测试友好性.
System.IO.FileInfo有什么问题?我很好奇,所以开始使用ReSharper创建一组包装器.它花了我16分钟,我没有测试过,也不知道它是否符合你的需求.不过,我想我会概述我使用的过程:
>创建一个新的类库项目
>将Class1设为public并将其重命名为FileSystemInfoWrapper
>为它提供一个类型为FileSystemInfo的私有字段_fsi(解析该类以获取导入的命名空间)
>单击该字段,然后选择“在构造函数中初始化”
>再次单击该字段并使用ReSharper – >代码 – >生成(Alt Ins);选择生成委派成员;点击“公开”以获取所有公共成员
>对于FileInfo也一样,但也从FileSystemInfoWrapper派生并删除重复的成员(ReSharper本可以做得更好)
> DirectoryInfo也相同,但也派生自FileSystemInfoWrapper并修复重复项
>对于每个包装器,单击该类,然后使用ReSharper-> Refactor-> Extract Interface
>让IFileInfoWrapper和IDirectoryInfoWrapper从IFileSystemInfoWrapper派生,并删除重复项.
结果是接口包括相应类的方法和属性,以及委托给原始类并实现接口的具体类.然后,您应该能够创建自己的模拟类,并更改代码以使用接口,而不是直接使用System.IO具体类.