using System.Collections.Generic;
public static void Main()
var buch1 = new Buch("Starwars");
var buch2 = new Buch("Email für dich");
var p1 = new Person("Hans", "Wurst");
var p2 = new Person("Maria","Muster", buch1);
var p3 = new Person("Mark","Rund", new Buch("Neuer Kreis"));
p1.BucherListe.Add(buch1);
p2.DruckeBucherListe(true, false, I++);
p3.DruckeBucherListe(true, true, ErhöheZahler());
p1.BucherListe = p2.BucherListe;
p2.BucherListe.Add(buch2);
p3.DruckeBucherListe(false, true);
p2.BucherListe = new Liste<Buch>();
p2.BucherListe.Add(buch2);
private static int ErhöheZahler()
string Vorname{ get; set; }
string Nachname{ get; set; }
Liste<Buch> BucherListe{ get; set; }
public class Person : IPerson
public string Vorname { get; set; }
public string Nachname { get; set; }
public Liste<Buch> BucherListe { get; set; }
public Person(string vorname, string nachname)
BucherListe = new Liste<Buch>();
BucherListe.BuchWurdeHinzugefügt += OnBucherListHinzugefügt;
public Person(string vorname, string nachname, Buch buch) : this(vorname, nachname)
public void OnBucherListHinzugefügt(object sender, Buch b)
if(sender is Liste<Buch>)
var l = (Liste<Buch>)sender;
Console.WriteLine(this.Vorname + " - Text aus Event von Liste<Buch>: " + b.Title + " - Anzahl: " + l.Count);
Console.WriteLine("Text aus Event: " + b.Title );
public void DruckeBucherListe(bool extraZeileVoher = false, bool extraZeileDanach = false, int i = 0)
foreach(var b in BucherListe)
Ausgabe(this.Vorname + " - " + b.Title, extraZeileVoher, extraZeileDanach);
private static void Ausgabe(string text, bool extraZeileVoher = false, bool extraZeileDanach = false)
public class Liste<Buch> : List<Buch>
public event EventHandler<Buch> BuchWurdeHinzugefügt;
public new void Add(Buch item)
if(BuchWurdeHinzugefügt != null)
BuchWurdeHinzugefügt(this, item);
public string Title { get; set; }
public Buch(string title)