Laden...

Singleton - Fehler beim Methodenaufruf

Erstellt von Emmi83 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.804 Views
E
Emmi83 Themenstarter:in
109 Beiträge seit 2006
vor 17 Jahren
Singleton - Fehler beim Methodenaufruf

Hallo Leute,
ich komme aus der Java-Programmierung und habe in der Suche nichts passendes gefunden...

Mein Problem ist die Implementierung einer Singleton-Klasse um auf statische Methoden zuzugreifen.

Ich hab das folgendermaßen implementiert:

Singleton-Klasse


	public sealed class DataController
	{
		// Global variable declaration
		private static DataController dcon = null;
		private static string connection_string; 
		private static OleDbConnection connection;
		
		private DataController()
		{
			connection_string =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;User Id=admin;Password=;";			
		}
		
/* -----------------------------------------------------------
 * getInstance() - Singleton
 * ---------------------------------------------------------*/		
 		public static DataController getInstance()
		{
 			if(dcon == null)
 				dcon = new DataController();
			return dcon;	
		}

/* -----------------------------------------------------------
 * getMovies()
 * ---------------------------------------------------------*/			
 		public static ArrayList getMovies()
		{
			...
                }

Hab schon eine andere Version gesehen, in denen GetInstance() keine Methode, sondern eine Property ist. Stichwort get{ return... }. Das ist doch im Endeffekt dasselbe oder?

Statischer Aufruf von Methoden:


ArrayList movie_list = DataController.getInstance().getMovies();

Und hier krachts dann! Fehlermeldung:


Static Member 'MovieManager.DataController.getMovies()' cannot be accessed with and Instance reference. Qualify it with a typename instead.

Was stimmt hier nicht? Ich bekomm doch über die Methode getInstance() ein Objekt von DataController zurück, über das ich dann die statische Methode getMovies() aufrufen will.

Die Lösung ist sicherlich simpel, aber ich komm net drauf. 🤔
Ein kleines Codebeispiel wäre super!

Vielen Dank schon mal im Voraus!
Emmi

Es gibt keine Probleme - nur Herausforderungen!

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Emmi83,

ArrayList movie_list = DataController.getMovies();

Syntaxfehler sollte man auch als Anfänger selber lösen können oder lernen - zumal hier die Fehlermeldung genau sagt, was zu tun ist.

herbivore

E
Emmi83 Themenstarter:in
109 Beiträge seit 2006
vor 17 Jahren

hallo herbivore,
danke für deine lösung! ich weiß hätte drauf kommen können, aber du weißt doch wie das is...manchmal steht man auf dem schlauch.

Es gibt keine Probleme - nur Herausforderungen!

T
512 Beiträge seit 2006
vor 17 Jahren

Eine Singleton Implementation macht man doch genau deshalb, um die Methoden nicht static machen zu müssen.

Ich will damit sagen: wahrscheinlich ist eher nicht der Methodenaufruf das Problem, sondern die Definition der Methode.

e.f.q.

Aus Falschem folgt Beliebiges

6.862 Beiträge seit 2003
vor 17 Jahren

Statische Funktionen und Singleton beißt sich eh. Nen Singelton bedeutet ja das man immer mit einem Objekt arbeitet. Statische Funktionen verlangen ja aber dass man über den Klassennamen drauf zugreift so wie Herbivore und die Fehlermeldung sagen. Da passt wohl was in deinen Überlegungen wohl nicht.

Baka wa shinanakya naoranai.

Mein XING Profil.

E
Emmi83 Themenstarter:in
109 Beiträge seit 2006
vor 17 Jahren

Leut ihr habt natürlich recht. Ich glaub die Hitze hat mein Hirn zerbröselt X(

Vielen Danke euch allen! 😁

Es gibt keine Probleme - nur Herausforderungen!

C
159 Beiträge seit 2005
vor 17 Jahren

Ein wie ich finde nützlicher Link zum Thema Singleton:

http://www.yoda.arachsys.com/csharp/singleton.html

Christof