Danke - langsam ist klar wie der Hase l�uft. :-)
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

Antwort per Email an