如何将继承列表中的内容写入文本文件?

时间:2016-02-24 16:49:42

标签: c#

我可能会以完全错误的方式解决这个问题,但我正在尝试使用名为Load的方法将继承列表中的内容写入文本文件。

public class Appointments : List<Appointment>

这里没有问题,但是当我尝试将列表中的每个项目写入带有代码的文本文件时:

public bool Load(string fileName) 
{
    TextWriter tw = new StreamWriter("Appointment.txtr");
    foreach (string s in List<Appointment>)
    {
        tw.WriteLine(s + "\n");
    }
}

我收到错误"List<Appointment>" is a type which is not valid in the given context.

我有什么想法可以解决这个问题?或者有人有另一种方式去做我想要实现的目标。

感谢阅读!

2 个答案:

答案 0 :(得分:3)

List<Appointments>是一个类型...在foreach循环中,你必须使用IEnumerable类型的类实例。在你的情况下,继承List<Appointments>的约会又是类型IEnumerable的。因此,约会的实例是你应该在foreach循环中使用的。作为该类本身的加载方法......你可以做这样的事情

public bool Load(string fileName) 
{
    TextWriter tw = new StreamWriter("Appointment.txtr");
    foreach (Appointment a in this)
    {
       var s = a.ToString(); // code which converts appointment to string
        tw.WriteLine(s + "\n");
    }
}

答案 1 :(得分:0)

假设LoadAppointments的成员,您可以这样做:

public bool Load(string fileName) 
{
    using(TextWriter tw = new StreamWriter("Appointment.txtr"))
    {
        foreach (Appointment a in this)
        {
            tw.WriteLine(a.ToString() + "\n");
        }
    }
}

通过foreachthis进行操作,您将访问基础List课程中的项目。

注意:您忘记关闭作者,因此我添加了using块来处理此问题。

另一方面,调用方法Load有点误导,因为您实际上是将数据保存到文件中,而不是加载它。我怀疑一个更好的名字是Save