Wenn Sie den Konstruktor Ihrer Klasse aufrufen, können Sie nur eine Ausnahme im Konstruktor auslösen, wenn Sie feststellen, dass zuvor eine Instanz erstellt wurde. Da Sie die andere Bibliothek nicht steuern können, können Sie keine Factory-Methode oder statische Eigenschaft verwenden, die normalerweise den Zugriff auf ein Singleton steuert.
Je nach Situation können Sie auch einen Lightweight-Proxy verwenden, der eine Singleton-Instanz umschließt. In diesem Beispiel kann eine beliebige Anzahl von MyObjectProxy erstellt werden, aber alle verschieben ihre Implementierung auf eine einzelne Instanz von MyObject.
public class MyObject {
internal MyObject() {
}
private int _counter;
public int Increment() {
return Interlocked.Increment(ref _counter);
}
}
public class MyObjectProxy {
private static readonly MyObject _singleton = new MyObject();
public MyObjectProxy() {
}
public int Increment() {
return _singleton.Increment();
}
}
Initiiert die Bibliothek die Klasse "said"? – adatapost
Ich benutze 'Lazy hisClass;' wenn 'hisClass.Value' aufgerufen wird, wird der Standardkonstruktor meiner Klasse aufgerufen. Obwohl 'Lazy' die gleiche Instanz beim nächsten Zugriff auf 'hisClass.Value' zurückgeben würde, möchte ich aber sicherstellen, dass niemand mehrere Instanzen von 'myClass' erstellen kann. –
Xaqron