Wie kann ich in C# mithilfe von lambda expressions von einem Personen feld auf ein sub klasse kommen um dort eben etwas zu ändern oder auszugeben?

...komplette Frage anzeigen

2 Antworten

Mache Person zu einer abstrakten Klasse und deklariere in dieser die Methode, die du für die Ausgabe benutzt. So garantierst du die Typsicherheit, die du in diesem Fall auch benötigst.

Alternativ könntest du den Subklassen ein Interface (IPrintable) geben, welches die Ausgabe-Methode deklariert. Das Array müsste dann ebenso vom Typ IPrintable sein.

Wenn du diese Lösung so nicht umsetzen möchtest, musst du jedes iterierte Element auf seinen konkreten Typ prüfen und danach einen Cast durchführen, um die gewünschte Methode aufrufen zu können. Eine Verkürzung könnte ebenso der Cast auf ein Interface sein (wie oben dargestellt), mit anschließender Filterung bezüglich Erfolg und letztendlicher Aufruf der Methode.

Wenn die Ausgeben() Methode bei allen gleich heißt:

persFeld.ToList().ForEach(person => person.Ausgeben());
SoftwareCreator 19.01.2017, 22:22

tja danke aber das problem ist dass die ausgaben in subklassen sind also unter der person sie sind alle personen aber über person kann ich sie nicht ausgeben

0

Was möchtest Du wissen?