C# Singleton-Class Callback

Gast #5323514
Lesenswert?

Hi,

hier im Forum schon oftmals besprochen, coole Methode aber noch nicht zu 
100% von mir verstanden ^^

gibt es eine Möglichkeit aus einer Singleton-Instance einen Callback zu 
tätigen?
1
public class Singleton
2
{
3
   private static Singleton instance;
4

5
   private Singleton() {}
6

7
   public static Singleton Instance
8
   {
9
      get 
10
      {
11
         if (instance == null)
12
         {
13
            instance = new Singleton();
14
         }
15
         return instance;
16
      }
17
      
18
      if anything happend
19
      => call MethodeFromSingleton()
20
   }
21
}

1
public partial class MainWindow : Window
2
{
3
   Singleton st = Singleton.instance;
4
   public MethodeFromSingleton() {
5
      doAnything...
6
   }
7
}

evtl kann ich einen Trigger im Main irgendwie bekannt machen <- z.B. als 
Callback.
1
public MainWindow(){
2
   st.Callback = MethodeFromSingleton();
3
}

?

kann mir jemand helfen?
Gast #5324689
Lesenswert?

Albert schrieb:

> gibt es eine Möglichkeit aus einer Singleton-Instance einen Callback zu
> tätigen?

Natürlich, genauso wie aus jedem anderen Objekt.

> public class Singleton
[...]

So muss man unter .net kein Singleton bauen (kann es aber natürlich).

Unter .net kann man einfach eine Klasse selber als singleton benutzen. 
Man erspart sich den ganzen Aufwand der klassischen Singletons, um die 
Zahl der Instanzen auf eins zu begrenzen, weil man einfach überhaupt 
keine Instanzen erzeugt, sondern alles Nötige direkt in die Klasse 
einbaut.

In C# ist das Zauberwort für Felder, Methoden und Events der Klasse dann 
"static", in VB.net "shared".

Der einzige Trick ist dann noch: Man deklariert einen privaten 
Konstruktor und die Klasse als nicht vererbbar und verhindert damit 
schon im Ansatz jede Idee eines noch so inkompetenten Benutzers, die 
Klasse doch irgendwie instanziieren zu wollen...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren