В C#, почему я могу использовать TextWriter вместо StreamWriter?
Я довольно новичок в C#, поэтому прошу прощения за любые вопросы, которые кажутся основными.
Мне интересно, почему TextWriter и StreamWriter могут одновременно выполнять одну и ту же функцию (или, кажется, выполнять) в моем примере кода (работа с методом сериализации XML).
В этом примере я играю со списком элементов XML, атрибутов и т. Д. И надеюсь их сериализовать, передав их в функцию сериализации (которую я создал) в виде списка.
Вот код (обратите внимание на использование TextWriter):
public static void serialize(List<Table> listOfTables)
{
var ser = new XmlSerializer(typeof(List<Table>));
TextWriter writer =
new StreamWriter(@"Location\Sample.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(@"Location\Sample.xml");
ser.Serialize(writer, listOfTables);
writer.Close();
}
Поскольку я довольно новичок, я понимаю основы наследования и абстрактные классы, но я не могу соединить все части вместе, чтобы полностью понять это.
Пожалуйста, присылайте свои мысли и предложения. Спасибо!
1 ответ
Оба случая StreamWriter
экземпляры, но один экземпляр, который вы назначаете переменной типа базового класса TextWriter
это нормально.
поскольку XmlSerialize.Serialize
имеет перегрузку, которая принимает экземпляр базового класса TextWriter
, оба звонка в порядке и имеют одинаковый чистый эффект.