2016-10-09 2 views
0

Ich erstelle gerade ein Programm und muss nur ein Objekt einer bestimmten Klasse/Unterklasse erstellen. Ich möchte jedoch in der Lage sein, dieses Objekt innerhalb mehrerer verschiedener Button 'Events' zu bearbeiten. Ich suche wahrscheinlich das Objekt innerhalb der Hauptfunktion zu erstellen, sobald das Programm startet, aber dann in der Lage sein, das Objekt außerhalb des Bereichs von 'Haupt' zu verwenden, wie wenn eine Taste gedrückt wird. Ich habe mich umgeschaut und ich kann keine bestimmte Art finden, dass das funktionieren würde. Ich schreibe es in C# mit Windows Forms.Ein Objekt erstellen, das außerhalb des Bereichs verwendet werden soll

Also alle Vorschläge wären hilfreich, danke!

+3

Mögliche Duplikat [Singleton-Muster für C#] (http://stackoverflow.com/questions/2667024/singleton-pattern-for-c-sharp) – NineBerry

+0

Sind Sie Windows Forms sprechen? WPF? –

+0

Ja, ich meine Windows-Formulare, sollte das erwähnt haben! Ich werde es jetzt bearbeiten. –

Antwort

0

Was Sie suchen, ist das Singleton-Muster.

Es funktioniert durch eine statische Eigenschaft auf Ihrer Klasse ausgesetzt wird, die immer die gleiche Instanz davon zurück:

public sealed class MySingleInstanceClass 
{ 
    private static readonly MySingleInstanceClass instance = new MySingleInstanceClass(); 

    public static MySingleInstanceClass Instance 
    { 
     get 
     { 
      return instance; 
     } 
    } 

    static MySingleInstanceClass() 
    { 
    } 

    // Use a private constructor so no one besides your own class can create an instance of it 
    private MySingleInstanceClass() 
    { 
    } 

    public string SomeProperty { get; set; } 
} 

So jetzt, wenn (und wo auch immer) Sie diese Klasse zugreifen müssen, dann würden Sie verwenden es wie folgt aus:

MySingleInstanceClass.Instance.SomeProperty = "foo"; 
+0

Klasse sollte ne 'sealed'so nicht geerbt werden von – NineBerry

+0

Ich hatte einiges über Singleton Patterns gelesen, aber die Klasse, die ich erstelle, hat eine Unterklasse, die von ihr erbt, und ich möchte die Details der Klasse selbst ändern. Von dem, was ich gelesen habe, kann ich nicht mit einer Singleton-Klasse tun, oder habe ich nur irgendwo falsch gelesen? –

+0

@ D.Jamieson In diesem Fall würde ich wirklich eine detailliertere Beschreibung dessen benötigen, was genau Sie erreichen möchten. Ein Singleton ist die sauberste Lösung, wenn Sie nur eine Instanz Ihrer Klasse in Ihrer Anwendung benötigen. Wenn Sie Vererbung brauchen, scheint das nicht der Fall zu sein. Es kann aber auch in Ordnung sein, einer statischen Eigenschaft einer statischen Klasse nur eine (nicht singletongesteuerte) Instanz zuzuweisen, wenn dies sinnvoll ist. Eine Möglichkeit, ein Singleton zu erreichen, könnte auch darin bestehen, einen Dependency-Injection-Container zu verwenden, der die Lebensdauer Ihres Objekts behandelt. Dies würde auch eine Vererbung ermöglichen. –

Verwandte Themen