zoukankan      html  css  js  c++  java
  • A simple C# generic singleton class

    using System;
    using System.Reflection;

    namespace MiniCafe.Util
    {
        
    /// <summary>
        
    /// this is the base class for singleton mode in csharp. Derived class must have a
        
    /// privae or protected constructor without any parameters, otherwise exception will
        
    /// be throwed.
        
    /// </summary>
        
    /// <typeparam name="T"></typeparam>

        public class Singleton<T>
            where T : 
    class
        
    {
            
    private static T instance;
            
    /// <summary>
            
    /// instace property of class T
            
    /// </summary>

            public static T Instance
            
    {
                
    get
                
    {
                    
    if (instance == null)
                    
    {
                        
    lock (typeof(T))
                        
    {
                            
    if (instance == null)
                            
    {
                                ConstructorInfo constructor 
    = typeof(T).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, nullnew Type[0], new ParameterModifier[0]);
                                
    if (constructor == null)
                                    
    throw new Exception("The object that you want to singleton doesnt have a private/protected constructor so the property cannot be enforced.");

                                
    try
                                
    {
                                    instance 
    = constructor.Invoke(new object[0]) as T;
                                }

                                
    catch (Exception e)
                                
    {
                                    
    throw new Exception("The Singleton couldnt be constructed, check if the type T has a default constructor", e);
                                }

                            }

                        }

                    }

                    
    return instance;
                }

            }

        }

    }


  • 相关阅读:
    支持向量机SVM知识点概括
    决策树知识点概括
    HDU 3081 Marriage Match II
    HDU 3572 Task Schedule
    HDU 4888 Redraw Beautiful Drawings
    Poj 2728 Desert King
    HDU 3926 Hand in Hand
    HDU 1598 find the most comfortable road
    HDU 4393 Throw nails
    POJ 1486 Sorting Slides
  • 原文地址:https://www.cnblogs.com/swnuwangyun/p/556827.html
Copyright © 2011-2022 走看看