Auslagerung von gemeinsam genutzten Variablen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von TuxuT.

    Auslagerung von gemeinsam genutzten Variablen

    Guten Morgen Gemeinde.

    Hintergrund: Ich habe anfangs eine Klasse erstellt, die von meiner MainForm.vb im _Load-Teil instanziert wird.

    Private myClass As myClass
    myClass = New myClass

    Diese myClass besitzt eine Methode namens Setup(...), mit der ich Member-Initialisiere mit denen innerhalb der Instanz gearbeitet werden soll.


    Später dann habe ich gemerkt, dass ich mehrere myClass-Instanzen benötige (derzeit sind es 8).
    Die Setup-Funktion ist allerdings für alle 8 Instanzen die gleiche.
    Nun möchte ich gerne die Gemeinsamkeiten in eine spezielle Klasse namens myClassSetup auslagern um Resourcen als auch Zeit zu sparen. Ich möchte also nicht für jede Instanz die Variable x,y,z explizit auf einen Wert setzen, sondern dies nur einmal zentral machen müssen. Instanz A,B,C,D...H greifen dann auf diese zu.

    Nun meine Frage:
    Wie mache ich dies nun am Besten? Zudem soll der Zugriff auf die myClassSetup-Klasse nur von den myClass-Instanzen möglich sein.
    Von der myClassSetup gibt es somit genau eine Instanz, von der myClass-Klasse hingegen viele.

    Vielen Dank im Voraus.
    Eine Singleton Klasse sieht ungefähr so aus:

    Microsoft Visual Basic 2005 - Das Entwicklerbuch schrieb:

    VB.NET-Quellcode

    1. Public Sub MeineSingletonlasse
    2. Private Shared locSingleton As Singleton
    3. Private Shared locMutex As New Mutex
    4. Private Sub New()
    5. End Sub
    6. Public Shared Function GetInstance() As Singleton
    7. 'Vorgang Thread-sicher machen
    8. 'Wartet, bis ein anderer Thread, der diese Klasse 'instanziert, damit fertig ist
    9. locMutex.WaitOne()
    10. Try
    11. If locSingleton Is Nothing Then
    12. locSingleton = New Singleton
    13. End If
    14. Finally
    15. 'Instanzieren abgeschlossen, '...kann weiter gehen...
    16. locMutex.ReleaseMutex()
    17. End Try
    18. 'Instanz zurückliefern
    19. Return locSingleton
    20. End Function
    21. End Class

    Vielleicht hilft das zu Pointern: [VB.NET] Pointer?!?
    Mfg
    Vincent

    TuxuT schrieb:

    Nun möchte ich gerne die Gemeinsamkeiten in eine spezielle Klasse namens myClassSetup auslagern
    Genau die packst Du in Shared Properties.
    Für die kannst Du auch eine Shared Sub New() neben die "normale" New-Prozedur legen:

    VB.NET-Quellcode

    1. Shared Sub New()
    2. ' Initialisierung der Shared Member
    3. End Sub
    4. Public Sub New()
    5. ' Initialisierung der Instance Member
    6. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!