Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SINGLETON CODE SNIPPET


Information sur la source

Catégorie :Astuces Source .NET ( DotNet ) Classé sous : code, snippet, singleton Niveau : Débutant Date de création : 08/03/2006 Date de mise à jour : 08/03/2006 11:08:27 Vu / téléchargé: 7 448 / 279

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

Cette source est un Code snippet pour Visual Studio 2005 permettant d'implémenter un singleton.

Le code snippet va créer la classe, accessible par une propriété (publique) Instance.

Remarque : Cette implémentation de singleton est "thread safe".
 

Source

  • /// <summary>
  • /// Singleton.
  • /// </summary>
  • sealed class ClassName
  • {
  • #region ClassName Singleton
  • /// <summary>
  • /// Unique instance of ClassName
  • /// </summary>
  • private static volatile ClassName instance = null;
  • /// <summary>
  • /// Synchronization's object
  • /// </summary>
  • private static object syncRoot = new Object();
  • /// <summary>
  • /// Get the unique instance of ClassName
  • /// </summary>
  • public static ClassName Instance
  • {
  • get
  • {
  • // Quick test
  • if (instance == null)
  • {
  • lock (syncRoot)
  • {
  • // Thread safe test
  • if (instance == null)
  • {
  • // First call, create the instance
  • instance = new ClassName();
  • }
  • }
  • }
  • return (instance);
  • }
  • }
  • #endregion // ClassName Singleton
  • /// <summary>
  • /// Private constructor of the singleton
  • /// </summary>
  • private ClassName()
  • {
  • }
  • }
    /// <summary>
    /// Singleton.
    /// </summary>
    sealed class ClassName
    {
        #region ClassName Singleton
        /// <summary>
        /// Unique instance of ClassName
        /// </summary>
        private static volatile ClassName instance = null;

        /// <summary>
        /// Synchronization's object
        /// </summary>
        private static object syncRoot = new Object();

        /// <summary>
        /// Get the unique instance of ClassName
        /// </summary>
        public static ClassName Instance
        {
            get
            {
                // Quick test
                if (instance == null)
                {
                    lock (syncRoot)
                    {
                        // Thread safe test
                        if (instance == null)
                        {
                            // First call, create the instance
                            instance = new ClassName();
                        }
                    }
                }
                return (instance);
            }
        }
        #endregion // ClassName Singleton

        /// <summary>
        /// Private constructor of the singleton
        /// </summary>
        private ClassName()
        {
        }
    }

Conclusion

Pour "installer" ce code snippet dans Visual Studio :

- Menu Tools, puis "Code Snippets Manager".
Il suffit ensuite d'importer le fichier founit dans cette source.

Pour utiliser le code snippet :
- Dans l'éditeur de code, taper "Singleton", puis appuyer sur <Tab>.
- Remplacer ClassName par le nom de votre classe singleton, puis appuyer sur <Entrée>.

Un lien utile, pour créer/éditer des code snippets avec Snippy :
http://www.gotdotnet.com/codegallery/codegallery.aspx?id=b0813ae7-466a-43c2-b2ad-f87e4ee6bc39
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Singleton.snippetTélécharger ce fichier [Réservé aux membres club]1 683 octets

Télécharger le zip

Historique

08 mars 2006 11:08:28 :
Manquait le constructeur du singleton...

Commentaires et avis

signaler à un administrateur
Commentaire de MorpionMx le 17/03/2006 14:50:34 administrateur CS

Très bonne idée l'idée du .snippet :)

signaler à un administrateur
Commentaire de Khaled_ST le 14/02/2007 16:48:41

Merci pour ton code, mais j ai une petite question. Ici le constructeur est déclaré "private". Comment on fait alors pour créer une première instance de l'objet ?
Merci de votre réponse.

signaler à un administrateur
Commentaire de MorpionMx le 14/02/2007 16:51:52 administrateur CS

C'est le principe du singleton. Tu accedes a une instance unique via la propriété Instance

signaler à un administrateur
Commentaire de Khaled_ST le 14/02/2007 17:01:12

Oui en effet, il restais juste a dire que pour créer le premier objet dans une autre classe, au lieu de faire :
ClassName classname = new ClassName;
On nfait plutot
ClassName classname = ClassName.Instance;
Voila J'espère que ça aidera quelques uns parce que pour quelqu'un non habitué avec les singletons ce n'est pas très facile au début.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Executer du code C# [ par Skyride ] Bonjour à tousJ'espère que vous pourrez me renseigner...Je m'initie depuis quelques temps à l'environnement .NET et je commence un petit peu à m'inter Les textures [ par NICKO02 ] Pour ceux qui ont le SDK de DX9, je prend le tutorial 5.Voila j'essaies de creer une texture : Dans le fichier D3dtriangle.cs;Dans la classe GraphicsC Quel est le meilleur moyen de gerer un buffer ... [ par Hawkmoon ] Bon voila mon probleme : je connecte une socket sur un server irc mais avec le code suivant j'arrive pas a gerer les reponses du server dans un buffer Probleme DropDownList [ par jdaviaud ] J'ai un petit pb avec un dropdownlist.Quand je veux en récupérer la valeur de la ligne sélectionnée, j'utilise le code suivant :string famille = DropD array et CSharp [ par matgai ] Bonjour,Je débute en C# et je vois déjà les limites du tout-objet par rapport à C++. Voici en particulier où je bute :je veux écrire l'équivalent C++ problème de serialisation avec NetworkStream [ par Oberon ] J'aurais voulu sérialisé un objet en passant par un networkStream mais je bute sur un problème de casting...Coté serveur:BinaryFormatter formatter = n Datagrid : faire une colonne spéciale par le code behind [ par Felixlechat ] Bonjour, je sais comment ajouter une BoundColumn dans le code, et comment ajouter un ItemColumn dans la page (dans une datagrid), mais en revanche le Création d'un tableau dynamique HTML par le code... [ par pchanet ] Bonjour à tous,Je suis en train de développer la gestion d'une table HTML (type &lt;table&gt;...&lt;/table&gt;) en dynamique à partir de la page de co code ascii [ par alcamatt ] comment peut on reccupérer le code ascii d'un caractere avec csharp ?En visual basic, je crois me rappeler qu'il fallait utiliser la fonction Asc(&lt; supprimer DES fichiers [ par Franckyom50 ] Lu à tous ! J'aimerais savoir comment faire pour supprimer toutles fichiers d'un dossier spécifique. Le problème, c'est que j'arrive pas à voir co


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 5,335 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.