I don't know how many times I have implemented the Singleton Design Pattern in C#, but it was starting to get old...
So I Googled the net, looking for something I could re-use. I found this excellent article, and adapted it to use Generics. This is what I came up with:
using System; namespace TT { #region Singleton<T> /// <summary> /// Provides a Singleton implementation using Generics. /// </summary> /// <typeparam name="T">Type of singleton instance</typeparam> public sealed class Singleton<T> where T : new() { Singleton() {} public static T Instance { get { return Nested.instance; } } class Nested { // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static Nested() {} internal static readonly T instance = new T(); } } #endregion }
You can easily use this class to create a Singleton for any type you want, all it has to do is have a default parameterless constructor. For instance:
Singleton<StoryBoardManager>.Instance.Stop();
Pretty neat, huh?
Remember Me
a@href@title, i, strike, u
Copyright © 2003-2008 Falafel Software Inc.
Subscribe to Falafel Blogs
The opinions expressed herein are Falafel's employees own personal opinions and do not represent Falafel Software's view in any way in case they go bananas!