Hallo ihrs,
ich hätte da mal ein kleines Problem und hoffe, ihr könntet mir vielleicht mit nem kleinen Denkansatz auf die Sprünge helfen. Und zwar schreibe ich derzeit eine ASP.Net-Anwendung welche mit mehreren Datenbanksystemen dynamisch kommunizieren soll. Für jede Datenbank gibt es einen eigenen Handler, welche eine .cs-Datei ist. Außerdem habe ich ein Interface (ISql) erstellt, von welchem jede Klasse erben muss (darin sind auch die Funktionen definiert, welche jeder Handler zwingend implementieren muss.
Die Handler funktionieren problemlos (hab MSSQL und MySQL ausprobiert) und der Zugriff auf die Handler läuft über das Interface, allerdings muss ich natürlich dem System sagen, welchen Handler er nehmen soll (MSSQL oder MySQL). Da das System auch für weitere Datenbanksysteme erweiterbar sein soll, ohne das die Ursprungsdateien überarbeitet werden müssen (seht es als eine Art Addon) würde ich das ganze gerne möglichst Dynamisch machen.
Mein Problem ist jetzt, das ich dem System irgendwie das entsprechende Objekt geben muss. Momentan habe ich das ganze so gelöst (so soll es aber nicht sein):
C#-Quelltext
1: 2: 3: 4: 5: 6:
| protected void Page_PreInit(object sender, EventArgs e) { JetBoard.Core.Basic.SqlClasses.MSSQL sqlClass = new Core.Basic.SqlClasses.MSSQL(); JetBoard.Core.Basic.Handlers.StyleHandler styleHandler = new Core.Basic.Handlers.StyleHandler(); this.MasterPageFile = string.Format("~/Styles/{0}/Master.Master", styleHandler.GetDefaultStyle(sqlClass)); } |
styleHandler.GetDefaultStyle(sqlClass) ermittelt in diesem Fall das StandartMastertemplate für die Seite und bindet dieses an die Seite. Allerdings würde ich jetzt gerne das "JetBoard.Core.Basic.SqlClasses.MSSQL sqlClass = new Core.Basic.SqlClasses.MSSQL();" aus der ASP-Seite rausbekommen und am besten Dynamisch übergeben.
Hat jemand von euch vielleicht eine Idee, wie ich das bewerkstelligen kann, ohne das der Author des "AddOns" an den Core-Klassen rumdocktern muss? Und sorry wenn das ganze etwas Wirr klingt, ist doch schon etwas später und ich bin nicht so gut im Erklären. Ich hoffe jemand von euch kann mir da weiterhelfen und mir nen Tipp geben. Ansonsten müsste ich nämlich tatsächlich für jedes Datenbanksystem sämtliche ASP-Dateien und Klassen, welche den entsprechenden SqlHandler nutzen seperat schreiben und die Coredateien dann mit den für das jeweilige Datenbanksystem überschreiben.
Liebe Grüße
Malikio