c# - MVVM/IoC 我应该包装每个 IO 操作吗?

标签 c# mvvm inversion-of-control

在遵循 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/

相关文章:

C#工厂模式和IoC的区别

java - 如何使用类加载器实例化 spring bean?

java - Apache 点燃: How can I improve insertion performance?

c# - C# 预处理器指令中运算符的优先级是什么?

c# - Umbraco - 从 Action 处理程序刷新内容树中节点的父节点

wpf - 如何将不同的图像添加到组合框项目源数组

inversion-of-control - 基于构造函数参数属性使用autofac解决依赖关系

c# - 如何将图像连同 DPI 信息一起保存到剪贴板?

zend-framework - Durandal:如何将配置数据从 HTML Host 传递到 ViewModel?

c# - 从父类到其派生类的通信设计模式