hab gerade nen Prob mit der Klassenstruktur...muss dazu sagen, dass ich im Programmieren nicht wirklich blutiger Anfänger bin jedoch mit OOP meine Probs habe und deshalb einfach mal wissen will wie ihr das lösen würdet!
Szenario:
Also ich will ne einfach Webseite machen, wo ein Banner oder Textlink aller 30 sek neu aus der Datenbank geladen wird (mit ReloadSperre).
Dafür hab ich mir ne ne normale Webseite gemacht und ein eigenes UserControl, welches das aller 30sek neuladen und Werbung anzeigen übernehmen soll.
Dieses Control nenne ich jetzt einfach mal RotateAds. Dort gibts 2 Propertys: 1. AdType (Auswahl zw. Banner und Textlink (soll erweiterbar sein) mit Hilfe eines Enum) 2. AdKind (eig. uninteressant...sagt nur welche Art von Werbung angezeigt werden soll...da gibts View oder Klick und wieder mit Enum)
Das Control soll dann einfach verwendet werden, dass man die Propertys setz (oder halt Standardwerte) und dann die Banner angezeigt werden...soweit funz es auch schon.
So jetzt aber zu dem interessanteren Teil:
Wie bekomme ich die Daten aus der Datenbank in mein Control!
Momentane Weg:
Datenbank (Stored Procedures) --> DataSet (automatisch erstellt) --> Klasse BannerAds bzw TextlinkAds
die beiden Klassen sind von der abstrakten Klasse AdsDB (definiert Insert, Delete, SelectAll) abgeleitet und benutzen das Interface IRotatableAds (nur die Methode GetNewAd).
in meinem Control rufe ich dann die GetNewAd auf und bekomme nen DataRow wieder...da lese ich dann die Werte aus und füge sie wieder auf Grundlage von AdType in die Webseite ein (halt entweder normaler Textlink oder ImageLink erzeugen).
switch (adType)
{
case AdType.Banner:
ShowBanner();
case AdType.Textlink:
ShowTextlink();
break;
default:
ShowBanner();
break;
}
in ShowBanner oder Textlink passiert dann halt alles -
also was ich net so toll finde bzw net verstehe ist:
Ich muss trotz Interface und Abstrakter Klasse für jedes Ad ne neue Klasse machen weil sich das DataSet immer ändert...gibts da ne Möglichkeit das zu ändern? und dann sehe ich kein Vorteil darin mit der Klassenstruktur so zu arbeiten...könnte man doch einfach 2 Klassen BannerAd und TextlinkAd machen und dann darauf in ShowBanner/Textlink drauf zu greifen, auch ohne dass die von einer gemeinsamen Klasse gesagt bekommen, dass sie die gleiche Struktur haben sollen -
EDIT: achso:
und wie man erreichen kann, dass der Weg vom Control bis zur Auslese der Daten eigentlich bei jeder Werbungsart die gleiche ist und ich nicht immer für die beiden oder halt 3 immer das gleiche Schreiben muss - BannerAd und TextlinkAd sind vom Aufbau gleich (es wird nur auf eine andere Tabelle in der Datenbank zugegriffen sonst ist es das selbe) und auch ShowBanner und ShowTextlink sind gleich (unterscheiden sich nur in der unterschiedlichen Ausgabe der Daten)
weiß aber nicht wie ich das erreichen kann!
wie ihr merkt bin ich leicht verwirrt gerade^^
ups ist ja ziehmlich lang geworden...hoffe trotzdem dass sich jemand die Mühe macht udn das sich durchliest