is/means "System.IO.Stream+NullStream" 到底是什么?

What exactly is/means "System.IO.Stream+NullStream"?

我目前正在尝试寻找为单元测试目的创建 HTTP 上下文的正确方法。在检查创建的流类型时,令我惊讶的是以下 returns 类型 System.IO.Stream+NullStream.

var context = new DefaultHttpContext();

var requestBodyType = context.Request.Body.GetType().FullName; 
var responseBodyType = context.Response.Body.GetType().FullName; 

如果测试用例需要它,我会简单地用 MemoryStream 替换流,然后对其进行相应的操作。

var memoryStream = new MemoryStream();
var context = new DefaultHttpContext(); 
context.Response.Body = memoryStream;

到目前为止一切顺利。但是 究竟 System.IO.Stream+NullStream?我本来希望在文档中找到一种类型的 NullStream,但找不到这样的东西。

这是一个 internal type

它sub-classesStream,并暴露为Stream.Null

正如您从实现中看到的那样,它只是丢弃了写入其中的所有数据,并且 return 如果被询问,则不会丢弃任何数据。

System.IO.Stream+NullStream 的层次结构如下所示

public abstract class Stream {

    private sealed class NullStream {
    
    }
    
}

+ 表示它是 Stream

的嵌套子 class