2016-02-24 99 views
0

我可能會用這種完全錯誤的方式,但我試圖用一種名爲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.

任何想法我如何解決這個問題?或者有人有另一種方式來做我想要達到的目標。

感謝您的閱讀!

+0

Load()方法在Appointments類中聲明? –

+1

'在這個字符串'? –

+0

儘管我可以看到你沒有從字符串繼承...... – Alex

回答

3

List<Appointments>是一種類型...在foreach循環中,您必須使用IEnumerable類型的類實例。在您的情況下,繼承List<Appointments>的約會繼而是IEnumerable類型。所以Appointments的實例就是你應該在foreach循環中使用的。作爲該類負載方法itself..you可以做這樣的事情

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"); 
    } 
} 
+0

你給的代碼不對,你正在將約會投射到字符串。 –

+0

@EricLippert同意......糾正了.... – Viru

0

假設LoadAppointments一員,你可以這樣做:

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

通過在thisforeach你將訪問基類List類中的項目。

注意:您忘記關閉作者,所以我已經添加了一個using塊來處理此問題。

另一方面,調用方法Load有點讓人誤解,因爲實際上將數據保存到文件中,而不是加載它。我懷疑更好的名字是Save