<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Generic Singleton Pattern</Title>
      <Shortcut>GenericSingletonPattern</Shortcut>
      <Description>Generic Singleton Pattern [C#]</Description>
      <Author>Simone Busoli</Author>
      <HelpUrl>/PreviewSnippet.aspx?SnippetID=d5a0f31f-79cd-4f71-a762-e2fc298111a1</HelpUrl>
      <SnippetTypes>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Code Language="csharp"><![CDATA[public static class Singleton<T>
  where T : class
{
  static Singleton()
  {
  }
  
  public static readonly T Instance = 
    typeof(T).InvokeMember(typeof(T).Name, 
                           BindingFlags.CreateInstance | 
                           BindingFlags.Instance | 
                           BindingFlags.NonPublic, 
                           null, null, null) as T;
}
</PRE>]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>