Das schreibe ich schon an die .NET Liste und nix kommt an :(

Dann noch mal hier :)

Aja, da sollte man glatt mal einen sch�nen Artikel auf ASPHeute
schreiben ... ^^


> Du programmierst eine Lustige Webseite, die auch Datenverarbeiten 
> kann. Da Du aber offen lassen willst, woher die Daten alles kommen 
> sollen deklarierst Du Dir ein Interface welches beschreibt, was der 
> Datenprovider alles implementiert haben soll.
??? - Du meinst eine gemeinsame Schnittstelle (der Name sagt es ja) f�r 
verschiedene Abfragen?

--> nicht ganz - deswegen noch mal von Anfang an:

Achtung - Theorie :)

Du programmierst also Deine Webseite - sagen wir mal ein Portal. Dieses
Portal soll aber eine generische L�sung sein f�r jeden. Du m�chtest Dich
nicht auf eine DB festlegen sondern m�chtest im Prinzip Deinen Quellcode
verkaufen. Da es nun verschiede Firmen gibt, die unterschiedliche DB's
einsetzen machst Du das ganze generisch mit Interfaces. So kann dann der
Endkunde seine Datenbank selber dran binden - z.B. Oracle, SQL, Access,
MySQL, �ber irgendeine verdammte API an ein CRM oder was wei� ich was
...

Somit erzeugst Du ein Interface welches genau auf DEINE Bed�rfnisse
zugeschnitten ist!

Sagen wir zum Beispiel diese beiden:

        public interface IDataBase
        {
                IProject[] GetProjects();
                void AddNewProject(IProject Project);
        }

        public interface IProject
        {
                string Name
                {
                        get;
                        set;
                }
                int Identifier
                {
                        get;
                        set;
                }
        }

Wenn jetzt jemand einen Dataprovider bauen will muss er dieses Interface
implementieren und muss GetProjects implementieren. Wie er das macht ist
Deine Sache .. nur erwartest Du ein Array von IProject. Was er da zu
implementieren hat wei� er durch die Definition auch ...

Jetzt kannst Du zur Darstellung so vorgehen:

IProject[] projects = DataBase.GetProjects(); 

DataBase wurde vorher zugewiesen .. durch irgendeinen Mechanismus muss
sich der DataProvider halt anmelden ..

Dann kanns Du ganz bequem mit einer Schleife dr�ber laufen und die die
Projecte einzeln rauslesen und wie auch immer darstellen:

Foreach (IProject p in projects)
{
        Console.WriteLn(p.Name) 
}

oder so ..


> So kannst Du dann einfach auf Deiner Seite immer mit dem Interface 
> arbeiten.
Hier habe ich eben noch ein Problem - das Interface selber macht ja 
nichts, sondern nur die Klasse die daraus abgeleitet wird oder? Und 
warum macht die Klasse das nicht gleich selber?
---> das Interface selber sagt nur was! Zu implementieren ist! Die 
---> Implementierung selber wird in der Klasse gemacht ... Und: diese 
---> Klasse leitet nichts ab! Sie implementiert!

> Ich kann Dir noch mehr Beispiele geben (man kann das auch so richtig 
> krank machen ..)
Wenn Du ein Beispiel h�ttest, welches den Nutzen (mit und ohne als 
Vergleich) des Interfaces aufzeigt w�re ich Dir dankbar.
---> war das obere gut? Sonst h�tt ich noch eins ...


Micha


_______________________________________________
Coffeehouse Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/coffeehouse

Antwort per Email an