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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.