Hallo
bin momentan nebenbei an einem Projekt in C# am arbeiten und habe ein Problem mit der Exception im Titel.
Folgendes versuche ich:
In dem Programm gibt es eine Personenverwaltung.
Ich habe eine Mutterklasse 'Entity'
Code:
class Entity
{
int id;
string name;
public virtual int getID()
{
return id;
}
public virtual string getName()
{
return name;
}
}
Daneben gibt es eine Kindklasse 'FireFighter'
Code:
class FireFighter : Entity
{
int id;
string name;
public FireFighter(int id, string name)
{
this.id = id;
this.name = name;
}
public override int getID()
{
return id;
}
public override string getName()
{
return name;
}
}
Nun lasse ich das Clickevent von button1 eine neue Instanz von FireFighter erstellen.
Code:
private void button1_Click(object sender, RoutedEventArgs e)
{
FireFighter ff = new FireFighter(1, "XYZ");
//...
}
Es existiert nebenher noch ein EntityHandler der den Sinn haben soll, alle Entities zentral zu sammeln. Dieser EntityHandler besitzt eine List<Entity> und eine AddEntity(Entity entity) Methode
Code:
class EntityHandler
{
List<Entity> entities;
public EntityHandler()
{
}
public void AddEntity(Entity entity)
{
if(!entities.Contains(entity))
entities.Add(entity);
}
}
Ich habe nun versucht direkt nach der Instanziierung, den FireFighter per
Code:
entityHandler.AddEntity(ff);
zu registrieren.
Bei diesem Versuch schmeißt das Programm die Exception. Ich frage mich nur warum? Ich habe eine List<Entity> und übergebe der Funktion einen Nachfahre von Entity. Nach der negativer Überprüfung, ob das übergebene Entity bereits in der List<Entity> vorhanden ist, möchte ich das Entity dann nur in die Liste eintragen. Ich habe eine existierende Instanz von FireFighter... Die Fehlermeldung verstehe ich so, als ob ich gar keine existierende Instanz von Entity übergebe?
Kann mir das nicht so ganz erklären... Vielleicht fehlt mir auch einfach die Routine mit C# und ich habe einen Denkfehler in der Umsetzung des Problems.
Wäre nett, wenn mir jemand von euch weiterhelfen könnte.
Greetz
Terreox