C# 2.0中用范型实现单例模式

#region Using directives
   
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
   
#endregion
   
namespace GenericsSingleton
{
   /// <summary>
   /// 单例范型
   /// </summary>
   /// <typeparam name="T"></typeparam>
   public class Singleton<T>
   {
     private static T _instance;
   
     public Singleton()
     {
     }
   
     public static T Instance
     {
       get
       {
         if (_instance == null)
         { 
   
          //获得实例,使用这个方法的前提是T要有公有的、无参数的构造函数        
   
           _instance = (T)System.Activator.CreateInstance(typeof(T));
         }
         return _instance;
       }
     }
   }
   
   /// <summary>
   /// 要实现单例的类
   /// </summary>
   public class Foo
   {
     private int count = 0;
   
     public int Count
     {
       get
       {
         count++;
         return count;
       }
     }
   }
   
   /// <summary>
   /// 主函数
   /// </summary>
   class Program
   {
     static void Main(string[] args)
     {
       //连续调用三次如果值是递增的话说明三次调用都是同一个实例
       Console.WriteLine(Singleton<Foo>.Instance.Count);
       Console.WriteLine(Singleton<Foo>.Instance.Count);
       Console.WriteLine(Singleton<Foo>.Instance.Count);
   
       Console.ReadLine();
     }
   }
}
posted @ 2010-12-02 17:54  J&amp;W  阅读(151)  评论(0)    收藏  举报