torsdag, juni 12, 2008

Snippet för Singleton

Många gånger har jag tänkt att jag ska göra en snippet för att skapa en singleton men det har aldrig blivit av men idag, efter en lyckad release hos kund, så tycket jag att jag kunde ta mig fem minuter för att knåpa ihop en sådan som sedan kommer att spara in de fem minuterna om och om igen. Och om jag sedan också kan spara fem minuter åt någon annan så är väl det toppen!

Min singleton är baserad på DoFactorys Singleton med .NET optimized code men jag har bytt ut deras accessor, som är en metod, till en property pga jag tycker att det då blir snyggare att accessa den från annan kod då. Man slipper parenteserna i anropet.

Skapa en ny fil i Visual Studio av typen XML File,döp den till singleton.snippet, spara den i \My Documents\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets\ och klistra in följande kod:


<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">


  <CodeSnippet Format="1.0.0">


    <Header>


      <Title>singleton</Title>


      <Shortcut>singleton</Shortcut>


      <Description>Code snippet for singleton class</Description>


      <Author>Björn Eriksen - Connecta</Author>


      <SnippetTypes>


        <SnippetType>Expansion</SnippetType>


      </SnippetTypes>


    </Header>


    <Snippet>


      <Declarations>


        <Literal>


          <ID>className</ID>


          <ToolTip>The name of the class</ToolTip>


          <Default>SingletonClassName</Default>


        </Literal>


        <Literal>


          <ID>methodName</ID>


          <ToolTip>A method in the singleton class</ToolTip>


          <Default>MethodName</Default>


        </Literal>


      </Declarations>


      <Code Language="CSharp">


        <![CDATA[


          public sealed class $className$


              {


                  //This is the instance that will hold the instance


                  private static readonly $className$ instance =


                    new $className$();


 


                  //Private constructor


                  private $className$()


                  {


                  }


 


                  //The property used to return the singleton instance


                  public static $className$ UniqueInstance


                  {


                      get


                      {


                          return instance;


                      }


                  }


 


                  //Add methods


                  public void $methodName$()


                  {


 


                  }


              }


        ]]>


      </Code>


    </Snippet>


  </CodeSnippet>


</CodeSnippets>


1 kommentar:

Löwendahl sa...

Eller så skriver du helt enkelt koden bara en gång ;)

http://www.lowendahl.net/showShout.aspx?id=187