K3

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 public static class SingleInstanceFactory
        {
            
private static Hashtable ht = new Hashtable();
            
private static object syncObject = new object();

            
public static T GetSingleInstance<T>() where T : new()
            {
                
string key = typeof(T).ToString();

                T t 
= default(T);

                
lock (syncObject)
                {

                    
if (ht.ContainsKey(key))
                    {
                        t 
= (T)ht[key];
                    }
                    
else
                    {
                        
lock (syncObject)
                        {
                            t 
= Activator.CreateInstance<T>();
                            ht.Add(key, t);
                        }
                    }
                }

                
return t;
            }
        }
posted on 2011-07-04 03:31  K3  阅读(291)  评论(0编辑  收藏  举报