如何克隆MemoryStream对象? [英] How can I clone MemoryStream object?
问题描述
我有一个MemoryStream
对象,该对象由Stream
类型参数
传递
(Stream
是C#中的抽象类).
I have a MemoryStream
object which is passed by Stream
type parameter
(Stream
is abstract class in C#).
我想克隆他并创建另一个MemoryStream
对象,该对象的位置与原始对象的当前位置相同,并在其中另创建一个新的XMLReader
,这样我就可以读取其内容.
I want to clone him and to create another MemoryStream
object a side with current position of the original and to create also a new XMLReader
out of it, so I will be able to read its content.
这是我所做的,并且不起作用(调试标有//* -> newReader
的行具有{None}
值)
假设:您位于方法内部,具有Stream currentStream
引用.
This is what I did, and it's not working (debugging the line marked with //* -> newReader
has got {None}
value)
Assumption: you are inside a method and have Stream currentStream
reference.
var x = new XmlReaderSettings();
x.IgnoreWhitespace = true;
using (var newMemoryStream = new MemoryStream())
{
stream.CopyTo(newMemoryStream);
using (var newReader = XmlReader.Create(newMemoryStream,x)) //*
{
Doing some stuff...
}
}
推荐答案
我已经解决了我的问题! :)
缺少的内容用//*
标记.
这是应有的代码:
I have solved my problem! :)
The things which were missing are marked with //*
.
Here is the code as it should be:
var xmlReaderSettings = new XmlReaderSettings();
stream.Position = 0;//*
xmlReaderSettings.IgnoreWhitespace = true;
using (var newMemoryStream = new MemoryStream())
{
stream.CopyTo(newMemoryStream);
newMemoryStream.Position = 0; //*
using (var newReader = XmlReader.Create(newMemoryStream, xmlReaderSettings))
{
newReader.MoveToContent(); //*
Doing some stuff...
}
}
这篇关于如何克隆MemoryStream对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!