代码之家  ›  专栏  ›  技术社区  ›  sympatric greg

重构问题

  •  0
  • sympatric greg  · 技术社区  · 17 年前

        public static string[] Foo(System.IO.Stream stream)
        {
            XmlTextWriter xmlWriter = new XmlTextWriter(stream,   System.Text.Encoding.ASCII);
    
            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("Element");
            xmlWriter.WriteEndElement();
            xmlWriter.WriteEndDocument();
            xmlWriter.Flush();
    
            return new string[3]{"1", "2", "3"};
        }
    

    和一个呼叫代码

    using(MemoryStream memStream = new MemoryStream())
    {
         string[] playerIDs = PlayerCommand.Foo(stream);
         // do some stuff with stream and playerIDs
    }
    

    提前感谢,, 格雷格

    1 回复  |  直到 17 年前
        1
  •  4
  •   mqp    17 年前

    没问题。作家的 Dispose() 方法基本上是第一次调用 Flush() 然后处理底层流,只要您拥有 盖上你自己(你在上面做的)只要小溪还活着就可以让它挂起来。

    其他答案建议处理Writer本身,但这实际上不是一个选项,因为它也会处理底层流。