globale objekte (elegante lösung)
-
tag,
ich habe iene web-application unter .net erstellt. habe in der projektmappe mehrere projekte.
jetzt will ich ein globales objekt haben, (z.b. datenbank-objekt), auf das ich von überall zugreifen kann.
d.h. ich will diese objekt "_irgendwo_" erstellen, und im falle des DB-objekts) die connection nur _einmal_ am anfang erzeigen. danach will ich von überall mit dieser bereits geöffneten connection auf die db zugreifen.wo und wie erstelle ich am besten diese globalen objektete, dfamit ich von überall zugriff darauzf hab?
oder welche "elegentare" lösung gibt es noch??danke rene...
-
Es gibt IMHO nur die Lösung eines statischen public Klassenmembers.
-
Obwohl, statisch muss es ja nicht sein.
-
oooch,
statische member sind aber (imo) unschön.mir würde nur noch so spontan einfallen, eine klasse (z.b. cGlobal ) erstellen, die alle benötigten globalen elemente beinmhaltet (z.b. Datenbank-objekt, user-objekt, ...)und diese an die funktionen übergibt.
so kann man drauf zugreifen, muss auch nur _ein_ parameter übergeben, anstatt n parameter (user, db, ...)cUser cLogin::login(string sName, string sPassword, cGlobal oGlobal) { oGlobal.oDB.ExecuteReader(foo::bar); oGlobal.oUser.iID = foo::bar; }
ist nur ein spontaner einfall.
hat jemand eine bessere iddee, ohne dass man statische member hat??danke...
-
Ne idee wär auch ein Singleton-Pattern zu integrieren!
für diejenigen die nicht wissen was das ist:
du hast eine Klasse von der es nur EINE einzige instanz geben kann!using System; public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } return instance; } } }
mehr infos: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/ImpSingletonInCsharp.asp