posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

Singleton snippet per C#

Non che io sia un fan scatenato degli snippet, però per certe cose sono proprio comode.

All'ennesima classe singleton che dovevo costruire mi sono fermato, ho scritto uno snippet ed eccolo qui:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="
http://atd.vevy.com/CodeSnippet">
 <CodeSnippet Format="1.0.0">
  <Header>
   <Title>singleton</Title>
   <Shortcut>singleton</Shortcut>
   <Description>Code snippet for singleton pattern</Description>
   <Author>Raffaele Rialdi</Author>
   <SnippetTypes>
    <SnippetType>Expansion</SnippetType>
   </SnippetTypes>
  </Header>
  <Snippet>
   <Declarations>
    <Literal Editable="false">
     <ID>classname</ID>
     <ToolTip>Class name</ToolTip>
     <Function>ClassName()</Function>
     <Default>ClassNamePlaceholder</Default>
    </Literal>
   </Declarations>
   <Code Language="csharp">
    <![CDATA[private static $classname$ _Instance = null;
  private $classname$ ()
  {
  }
  public static $classname$ GetInstance()
  {
   if(_Instance == null)
    _Instance = new $classname$();
   return _Instance;
  }

$end$
]]>
   </Code>
  </Snippet>
 </CodeSnippet>
</CodeSnippets>

Per farlo funzionare è sufficiente salvarlo in un file chiamato singleton.snippet e metterlo nella cartella:
My Documents\Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets

Non rimane quindi che provarlo ed all'interno di una classe C# scrivere singleton<tab> per ottenere l'espansione del codice.

Sicuramente sarebbe stato più adatto il wiki in modo che tutti possano rifinire, aggiungere, limare e modificare lo snippet. Me ne scuso ma il tempo mi sta addosso e ho fatto prima qui.

Print | posted on venerdì 20 gennaio 2006 12:18 |

Feedback

Gravatar

# re: Singleton snippet per C#

I Singleton non esistono. Soffrivo tempo fa di un'acuta forma di Singletonitis, scrivevo Singleton in continuazione. Mi sono iscritto all'Associazione Singletonitis Anonimi (A.S.A.) ed ora finalmente sono guarito. Non uso piu' Singleton, il mio codice mi ha ringraziato, i test pure, i miei colleghi anche. Ed ora sono un programmatore felice :)

Se non volete far piangere Gesu' Bambino non usate i Singleton.
20/01/2006 13:00 | Francesco Carucci
Gravatar

# re: Singleton snippet per C#

Sono daccordo e come ho precisato nel mio post sarebbe stato più giusto metterlo nel wiki perchè tutti potessero creare le numerose varianti possibili.
Il mio target infatti non è certo quello di creare l'implementazione di singleton per antonomasia anche perchè non credo che ce ne possa essere una "universale".

Nel mio caso specifico il progetto è si multithreading ma non durante la fase di prima istanziazione per cui a me il problema non toccava.
C'è chi preferisce pre-istanziare nel costruttore statico, c'è chi preferisce fare un bel lock con il doppio if come anche Ricciolo suggeriva.

Insomma, leggeere attentamente le avvertenze, usare con cautela e non somministrare ai programmatori al di sotto dei 12 anni :-)
20/01/2006 16:09 | Raffaele Rialdi
Gravatar

# re: Singleton snippet per C#

Se l'implementazione che ho postato semplicemente contenesse una throw invece del return _Instance, ti avrei fatto contento ;-) Ma permettimi di dissentire che questa sia sempre la soluzione migliore.
Che questo snippet si possa implementare in mille modi differenti è stata proprio la mia iniziale precisazione.
20/01/2006 18:57 | Raffaele Rialdi
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET