Ein Kumpel hat mir �brigens noch sch�nes Beispiel geschickt, dass ich Euch nicht vorenthalten will:
------ public interface IEssbar { void EatMe(); }
public class Apple : IEssbar
{
void EatMe()
{
// ich werde gegessen interface implementierung
}
}public class Orange : IEssbar
{
void EatMe()
{
// ich werde gegesesn interface implementierung
}
}
main {
ArrayList applesnoranges = new ArrayList();
applesnoranges.Add( new Apple() );
applesnoranges.Add( new Orange() ); foreach( IEssbar eatble in applesnoranges )
{
eatble.EatMe();
// Tataaa.... :o)
// Polymorphismus �ber ungleiche typen ;O)
}
}
---
wenn das IEssbar nicht w�re m�sste man so vorgehen foreach( Apple apple in applesnoranges )
{
apple.EatMe();
}und dasselbe dann auch f�r die Orangen... :o)
foreach( Orange orange in apllesnoranges )
{
orange.EatMe();
}Gruss Stephan
Hmm... ich zwinge bei einem anderen Punkt also den Ersteller des Fremdcodes mir die Schnittstelle zu �bergeben, die er dadurch zwingend vorher implementieren muss oder wie?
�hm... Was meinst Du mit zwingen?
Also angenommen du implementierst einen Excel-Clone und der soll mit Funktionen erweiterbar sein...
Dann k�nnte das ein m�gliches Interface sein:
interface IStringFunction { public string FunctionName{get;} public string Calculate(string x) }
Wenn ich jetzt eine Funktion implementieren will, geht das z.B. so:
public class MyUCASEFunction : IStringFunction { public string IStringFunction.FunctionName { get { return "UCASE"; } }
public IStringFunction.Calculate(string x) { return x.ToUpper(); } }
Ich br�uchte bloss die DLL in ein bestimmtes Verzeichnis legen und die Applikation w�rde das Verzeichnis nach DLLs durchsuchen, die Klassen enthalten, die das entsprechende Interface implementieren und diese Klassen instantiieren...
Aber man muss niemanden dazu zwingen die Schnittstelle zur Verf�gung zu stellen oder zu implementieren....
Der App-Programmierer erstellt das Interface, damit er die Application sp�ter erweitern kann, ohne den Hauptcode der App zu �ndern und derjenige der das Interface implementiert mlchte die App erweitern... Kein Zwang :-)
Soweit so gut....
Angenommen man kommt nun auf die Idee allgemeine Stringfunktionen zuzulassen, also mit beliebiger Anzahl vom Parametern, dann k�nnte man ein zweites Interface erstellen:
interface IStringFunction2 { public string FunctionName{get;} puclic int ParameterCount public string Calculate(string[] params) }
Claudius
_______________________________________________ Coffeehouse Mailingliste, Postings senden an: [EMAIL PROTECTED] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/coffeehouse
