Iterering over liste af objekter der implementerer et interface
Her er nok et nybegynder spørgsmål. Jeg har prøvet at simplificere problemet lidt...Jeg har et interface der implementeres to klasser:
public interface ITools { Decimal Price() }
public class Saw : ITools { void Pull(){}; Decimal Price(){};}
public class Hammer : ITools { void Swing(){}; Decimal Price(){}; }
I mit program har jeg så en collection med Saws og Hammers.
List<ITools> tools = new List<ITools>();
Tools.Add(new Hammer());
Tools.Add(new Hammer());
Tools.Add(new Saw());
Hvordan itererer jeg bedst over tools og på baggrund af objectets type kalder enten Pull() hvis det er en Saw eller Swing() hvis det er en Hammer?
Jeg er selv ude i noget i retning af følgende, men der må da være en bedre måde:
Foreach( var tool in tools) {
If (tool is Hammer)
{
var hammer = tool as Hammer;
hammer.Swing();
}
else if (tool is Saw)
{
var saw = tool as Saw;
saw.Pull();
}
}
Kan man lave noget med generics, linq eller?