zoukankan      html  css  js  c++  java
  • 一个Stream的封装——WrapStream

    写代码的时候经常遇到要将stream里面的某些函数修改一下,方便打桩或提供新功能。但由于CLR里面提供的Stream大部分都是sealed类型的。这个时候我们往往通过新建一个Stream类来封装现有stream成新stream。

        class WrapStream : Stream
        {
            Stream stream;
            public WrapStream(Stream stream)
            {
                this.stream = stream;
            }

            public override bool CanRead { get { return stream.CanRead; } }

            public override bool CanSeek { get { return stream.CanSeek; } }

            public override bool CanWrite { get { return stream.CanWrite; } }

            public override long Length { get { return stream.Length; } }

            public override long Position
            {
                get { return stream.Position; }
                set { stream.Position = value; }
            }

            public override void Flush()
            {
                stream.Flush();
            }

            public override int Read(byte[] buffer, int offset, int count)
            {
                return stream.Read(buffer, offset, count);
            }

            public override long Seek(long offset, SeekOrigin origin)
            {
                return stream.Seek(offset, origin);
            }

            public override void SetLength(long value)
            {
                stream.SetLength(value);
            }

            public override void Write(byte[] buffer, int offset, int count)
            {
                stream.Write(buffer, offset, count);
            }

            public override void Close()
            {
                stream.Close();
            }

            protected override void Dispose(bool disposing)
            {
                stream.Dispose();
            }
        }

    虽然本身这个实现并不难,但由于.net并没有内置这个wrapstream,每次都要实现有点烦,这里记录一下,以后再用的时候直接继承这个WrapStream,只重写需要特化的部分即可。另外,这个WrapStream可能也不够完善,后续有更正再补充。

     

  • 相关阅读:
    循环顺序队列
    iscsi与multipath
    MySQL 数据库设计 笔记与总结(4)维护优化
    [Swift]LeetCode6. Z字形变换 | ZigZag Conversion
    [Swift]八大排序算法(八):基数排序
    [Swift]八大排序算法(七):归并排序
    [Swift]八大排序算法(六):希尔排序
    [Swift]八大排序算法(五):插入排序
    [Swift]八大排序算法(四):堆排序
    [Swift]八大排序算法(三):选择排序 和 简单选择排序
  • 原文地址:https://www.cnblogs.com/TianFang/p/2839240.html
Copyright © 2011-2022 走看看