У меня есть несколько классов, которые содержат возможность записи в файл CSV или XML.
Для этого я передаю экземпляр StreamWriter или XmlWriter в методы ToCsv или ToXml.
public class HandFeed : JobItem
{
// Snip
public override void ToCsv(StreamWriter writer)
{
if (writer != null)
{
writer.WriteLine(JobItemsStrings.Job_HandFeed);
writer.WriteLine(JobItemsStrings.Job_Total + SEPARATOR_CHAR + this.Total.ToString());
}
}
public override void ToXml(XmlWriter writer)
{
if (writer != null)
{
writer.WriteStartElement("handfeed");
writer.WriteElementString("total", this.Total.ToString());
writer.WriteEndElement();
}
}
}
Теперь я собираюсь предоставить suport и для JSON, и если я продолжу в том же духе, это будет означать добавление другого метода ко всем моим классам по аналогии с ToJson или аналогичным.
Ну, это как-то неправильно. Я думаю о том, что, возможно, делаю все наоборот и передаю экземпляры классов различным объектам записи файлов, но не совсем уверен, что это будет правильным решением, или даже как лучше всего это сделать.
Возможно, я смогу передать интерфейс и вызвать Write()
? Это кажется , как будто это было бы более правильно, но опять же, как применить это на практике.
Итак, мои вопросы в двух словах:
- Должны ли классы быть «введены» писателями?
- Должны ли некоторые писатели быть «введены» в классы?
- Придерживайтесь текущей настройки, но вместо этого создайте какую-то форму интерфейса?
Любой совет приветствуется.