在遵循 IoC 标准的 C# 代码中,每个单独的 IO 操作都应该包装在一个处理 IO 操作的类中吗?例如,我到处都在使用 File.Exists 和 Directory.Create——我是否应该有一个类来公开这两个函数以及整个应用程序使用的每个文件操作,以创建一个抽象层?
关于 Path.Combine 或 Path.DirectorySeparatorChar,我可以直接使用它们还是应该围绕它们创建包装器?
返回文件信息变得有点棘手,我可以有一个函数来返回文件大小,但是如果我需要访问几个属性,那么我返回 FileInfo 对象——我不应该在代码中初始化 FileInfo而不是包装它?
最佳答案
找到答案。
不包装 IO 调用意味着您无法对类进行单元测试,因为它会更改真实文件而不是在沙箱中运行。
这意味着,是的,每个调用都必须被包装。幸运的是,System.IO.Abstraction提供了这样的抽象,因此只需将其插入项目并使用它。
然后我可以创建 IFileSystemExt 来公开常见的 IO 操作集,例如“确保路径的文件夹存在”和“如果存在则删除文件”。
关于c# - MVVM/IoC 我应该包装每个 IO 操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109037/