Globale Deklaration von Instanzen

Vektor

Erfahrenes Mitglied
Hallo zusammen,

ich hab eine, zugegebenermaßen blöde Frage, aber ich komme einfach auf keine zufriedenstellende Lösung.

Und zwar habe ich ein Projekt mit drei Forms. Dieses Projekt greift auf einige Klassenbibliotheken zu. Das stellt natürlich alles noch kein Problem dar. Nun benötigen aber die DLL's einige Werte der Forms, und genau da liegt mein Problem. Ich kann ja nicht auf die Forms zugreifen, da man nur auf DLL's Verweise anlegen kann. Ich hab das jetzt mit öffentlichen Eigenschaften in den Klassen gebastelt, denen ich bevor ich die Funktionen ausführe die Werte zuweise. Lieber hätte ich aber dass ich in den Klassenbibliotheken die Werte der Forms auslesen kann.

Gibt es also eine Möglichkeit so etwas "eleganter" zu lösen, oder muss ich mit dieser Art auskommen?

Danke für eure Hilfe...
 
Hallo,

ich habe ein ähnliches Problem gehabt. Ich habe es wie folgt gelöst.

Ich habe mir ein Modul erstellt, wo ich die formen bzw. Dialoge global deklariere und dort eine neue instanz erstelle. Dadurch ist es möglich von allen Formen, Klassen,usw... auf alle eigenschaften der Dialoge zuzugreifen. Das schaut dann so z.B. aus
Code:
Module Variablen
Public frmlogin As New frmlogin
Public frmlogin1 As New frmlogin
End Module

Ich hoffe ich habe dir weiter helfen können.

Isabelle
 
Also ich habe so etwas mit einem sog. "lazy binding" erledigt. (ich glaube das heißt so)

Ich habe eine xmlcontrol Klasse die ich öfters an allen möglichen Stellen benötige.

Zunächst eine shared Instanz der Klasse als Eigenschaft definieren.

Code:
Shared instance As meineKlasse

und nach dem Konstruktor

Code:
PublicSharedFunction GetInstance() As meineKlasse
 
If instance IsNothingThen
 
instance = New meineKlasse
 
EndIf
 
GetInstance = instance
 
EndFunction

So nun kann ich von überall her mit meineKlasse.GetInstance() eine Instanz der Klasse bekommen. (Entweder eine neue falls noch keine erzeugt wurde oder die bereits erzeugte.)

Ich hoffe das hilft Dir weiter.

Grüße
Speedy
 
Und damit wir jetzt noch etwas lernen:

Er hat nichts anderes gemacht, als eine Klasse erstellt, die nach dem Prinzip eines Singleton-Patterns arbeitet.

Und noch ein Tipp am Rande:
Eine stinknormale Klasse soll NIE auf die Visualisierung zugreifen. D.h. Klasse greift auf Form zu gibts nicht. Gleich aus dem Kopf schlagen, gleich vergessen. Wer der Meinung ist, dass es eine schöne Variante ist -> es ist das schmutzigste was gemacht werden kann. Das wird NIE, NEVER gemacht.

Und noch etwas:
Jeder der mit .NET arbeitet sollte sich die Grundlagen der OOP erarbeiten. Dazu gibts 100e Bücher, 1000e Tutorials und Artikel. Lernts das. und wiederholts es. Es ist wichtig!

So, könnts euch wieder hinsetzen. Und merken. Wenn nicht merken, dann aufschreiben und an den Bildschirm picken. :)
 
Danke für die Erläuterung, habe nämlich nicht gewußt wie das im Original heißt.

Bin da nur mal drübergestolpert aber nun kann ich wenigstens mal danach suchen und weiß endlich wie das Ding genannt wird.

Grüße
Speedy
 
Hallo zusammen,

danke für eure Antworten. Ich hab das jetzt komplett mit Propertys erledigt, aber immerhin etwas über die OOP und diese "Singleton-Pattern-Klassen" gelernt. :).

Danke nochmal...
 
Noch nen Hinweis:

Statt einer Shared Klasse kann man auch den Konstruktor PRIVATE machen und ne shared Methode bereitstellen, die den Konstruktor aufruft. Somit kann man selbst sicherstellen, dass der Nutzer der Klasse keinen Unfug macht und die Klasse IMMER shared genutzt wird.

Chris
 
Zurück