C# - 如何包装静态类

no9*_*no9 7 c# inheritance word-wrap

我想为System.Io制作util类(例如File,Directory等).

由于无法对静态类进行继承,我想知道如何将一个正确的方法包装成System.Io.File.

Jon*_*eet 15

我会创建三种类型:

  • 包含您希望能够测试的所有方法的界面,例如

    public interface IFileSystem
    {
        Stream OpenWrite(string filename);
        TextReader OpenText(string filename);
        // etc
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 委托给系统实现的实现:

    public class FrameworkFileSystem : IFileSystem
    {
        public Stream OpenWrite(string filename)
        {
            return File.OpenWrite(filename);
        }
        // etc
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 一个虚假的测试实现:

    public class FakeFileSystem : IFileSystem
    {
        // Probably all kinds of things to allow in-memory files
        // to be created etc
    }
    
    Run Code Online (Sandbox Code Playgroud)

你可能不希望把一切都File那里虽然-因为许多操作都可以从"芯"的人组成.当然,这意味着你自己重新实现这些操作,这可能是不可取的......