Variable aus einer anderen Klasse?

4 Antworten

Eine Möglichkeit wäre es, in Klasse A eine Referenz zu Klasse B zu hinterlegen, die bspw. beim Aufruf des Konstruktors gesetzt wird. Dann bestände über diese ein Zugriff auf Methoden und Eigenschaften. Wenn es sich um ViewModels im MVVM-Pattern handelt, sollte hier allerdings mit Bedacht gehandelt werden. Die ViewModel-Instanzen legt man ja schließlich nicht mehr unbedingt selbst an.

Der MVVM-Weg wäre der über ein Messenger-System (schau dir bspw. den Event Aggregator an, das Publish-subscribe-Pattern) oder Alternativen wie Event Broker / Mediator.

Den Weg über static gehen zu wollen (sei es nun eine Singleton-Instanz oder nicht) lehne ich eher ab, das ist viel mehr eine bad practice. Versuche das Problem mit Instanzen zu lösen und ohne solche direkten Verbindungen, die im Prinzip das objektorientierte Konzept unterlaufen.

Welche variable willst du denn jetzt genau habrn?


Tastaturbrix 
Fragesteller
 16.08.2019, 15:42

Hey,

die TxbPfad .

Es ist eine WPF Anwendung und dort wird ein Wert gespeichert den ich später abrufen möchte.

0
Coop4Free  16.08.2019, 15:57
@Tastaturbrix

Hallo,

Mach eine getter methode. Das get was du bis jetzt hast, ist keine vollständige getter methode. Schreib also: public void getTxbPfad(String txpPfad) {return txbPfad;}

Diese methode kannst du dann in der anderen klasse aufrufen mit Alpha.getTxbPfad(); <- darin ist deine variable gespeichert.

Beachte, dass fu die klasse alpha noch in der zweiten klasse initialisieren musst.

Viele Grüße

0
myLocalVar = myClass.getMyVarVal();

Woher ich das weiß:Studium / Ausbildung – Informatikstudent
was mach ich falsch ?

Anscheinend verwechselst du Klassen mit Objekten. In der Klasse wird unter regulären Umständen gar nichts gespeichert, sondern wenn dann in Objekten dieser Klasse.

Was du gemacht hast, ist, dass du (anscheinend ohne es zu verstehen) in der Klasse einen statischen Verweis auf ein neues Alpha()-Objekt erzeugt hast. Diese Alpha-Objekt ist aber trotzdem noch immer leer und auch der String txbPfad ist nicht gesetzt (= null).

Genau das teilt dir dein Compiler bzw. die IDE mit.


Tastaturbrix 
Fragesteller
 16.08.2019, 15:48

Das bedeutet das ich mittels => public static readonly Alpha Instance = new Alpha();

Keine Instance erstelle wo ich dann aus einer anderen Klasse drauf zugreifen kann?
Dachte das so würde das Singelton-Muster laufen
Siehe hier => https://stackoverflow.com/questions/44734112/c-sharp-set-from-another-class-and-get-from-another-class

0