Проблема в том, что Book
не переопределяет ToString
, что означает этот цикл:
foreach (object list in books)
{
bookList.txtBookList.Text += list.ToString() + "\n";
}
Просто распечатает имя класса (с пространством имен) или Lab_8.Book
.
Чтобы исправить это, вы можете переопределить ToString()
в Book
:
class Book : Publication
{
// .. Your code...
public override string ToString()
{
return this.Title + " by " + this.AuthorFirstName + " " + this.AuthorLastName;
}
При этом я настоятельно рекомендую преобразовать ArrayList
для использования List<Book>
. Это позволит вам ссылаться на книги как на книгу, то есть:
foreach (Book book in books)
{
bookList.txtBookList.Text += book.AuthorFirstName + Environment.NewLine;
}
Единственное изменение, необходимое для этого, должно измениться:
private ArrayList books = new ArrayList();
Кому:
private List<Book> books = new List<Book>();
А затем также измените список, как указано выше ...