Singleton Pattern per C#
piccolo esempio di pattern singleton thread safe per C#. dal momento che lo uso molto spesso e che devo copiarmelo di qua e di là , ho deciso di scriverlo sul sito, che almeno so sempre dove trovarlo =D
ciao
public class Oggetto { #region Singleton //singleton pattern private static bool _isInit; private static Exception _error; private static volatile Oggetto _instance = null; private static object _syncObj = new object(); ////// Get the Oggetto Instance /// public static Oggetto Instance { get { if (_instance == null) { lock (_syncObj) { if (_instance == null) _instance = new Oggetto(); } } if (_isInit) return _instance; else throw new Exception( "Error initializing Oggetto", _error); } } private Oggetto() { try { InitData(); _isInit = true; } catch (Exception ex) { _isInit = false; _error = ex; } } #endregion private void InitData() { // qua ci va l'inizializzazione } // comodo per reinizializzare tutto, se serve internal void RefreshCache() { this.InitData(); } }
c#, dotnet, lavoro, pattern, singleton, best practices