我是C#的新手,所以请原谅任何似乎基本的问题。
我想知道为什么 TextWriter 和 StreamWriter 都可以在我的代码示例中使用相同的功能(或似乎是)(使用XML序列化方法)。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
在此示例中,我正在玩XML元素,属性等的列表,并希望通过将它们传递到 serialize 函数(我已经创建)作为一个来序列化。列表。
这是代码(请注意,文本作者的使用):
public static void serialize(List<Table> listOfTables)
{
var ser = new XmlSerializer(typeof(List<Table>));
TextWriter writer =
new StreamWriter(@"LocationSample.xml");
ser.Serialize(writer, listOfTables);
writer.Close();
}
这是该代码的工作原理完全相同(或者似乎是)(请注意,streamWriter而不是TextWriter):
public static void serialize(List<Table> listOfTables)
{
var ser = new XmlSerializer(typeof(List<Table>));
StreamWriter writer =
new StreamWriter(@"LocationSample.xml");
ser.Serialize(writer, listOfTables);
writer.Close();
}
我很新,我了解继承和抽象课的基础知识,但是我似乎无法将所有这些都加在一起以完全理解这一点。
请发送您的想法和建议。谢谢!
两个实例都是StreamWriter
实例,但是您将一个实例分配给基类类型TextWriter
的变量,这是可以的。
由于XmlSerialize.Serialize
具有接受基类TextWriter
实例的过载,因此两个调用都可以,并且具有相同的净效果。