Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么XmlTextReader调用不受支持的流时失败。长度?_C#_.net_Xmltextreader - Fatal编程技术网

C# 为什么XmlTextReader调用不受支持的流时失败。长度?

C# 为什么XmlTextReader调用不受支持的流时失败。长度?,c#,.net,xmltextreader,C#,.net,Xmltextreader,我有一个XmlTextReader,并在System.Net.ConnectStream中传递它。如果我进入调试器,我可以看到ConnectStream不支持Length属性,这会引发NotSupportedException 现在,我将Stream子类化,并传入我的类的一个实例。我的类还对长度为的get()访问器抛出NotSupportedException,但这次我所有的单元测试都失败了,出现了NotSupportedException XmlTextReader文档没有说它需要流支持长度,

我有一个XmlTextReader,并在System.Net.ConnectStream中传递它。如果我进入调试器,我可以看到ConnectStream不支持Length属性,这会引发NotSupportedException

现在,我将Stream子类化,并传入我的类的一个实例。我的类还对长度为的get()访问器抛出NotSupportedException,但这次我所有的单元测试都失败了,出现了NotSupportedException

XmlTextReader文档没有说它需要流支持长度,而且它显然可以使用不需要的流支持长度-发生了什么事?


(这是.NET 3.5客户端)

如果
从返回true,则假定
长度
设置长度
位置
搜索
都受支持。一些代码可能会测试
CanSeek
,并使用结果优化其行为-这里似乎就是这样。当您从
CanSeek
返回
true
,然后在
Length
中抛出异常时,这就打破了
中没有很好记录的契约


如果您不支持
Length
属性,最好从
CanSeek

返回
false
,您的
流返回什么?如果您能提供一个简短但完整的程序来演示这个问题,这将非常有帮助。您是否尝试过XmlDocument。如果您不使用大块XML,则非常容易使用。@JonSkeet-我的流返回的CanSeek与ConnectStream不同,是true(它可以,在它已经拥有的数据中,它只是不知道它可以接收多少数据)。如果我将其更改为false,XmlTextReader可以正常工作。谢谢你的指点!如果你加上这个作为回答,我会接受。@B先生,我实际上是在使用XmlSerialiser,传入一个XmlTextReader(为了使用反序列化()方法),但感谢您对XmlDocument的介绍,我会在将来的应用程序中记住这一点。@B先生:它不像LINQ to XML那么容易使用,在我看来,我会在一周中的任何一天接受XDocument而不是XmlDocument,特别是在涉及名称空间的情况下。