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
我目前正在尝试寻找为单元测试目的创建 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