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;
                }

            }

        }

    }


  • 相关阅读:
    OSError: Initializing from file failed
    python之邮件提醒
    python之经纬度的获取
    Pandas写入CSV格式
    代码不同之处高亮显示
    Python之免费随机代理IP的获取以及使用
    正则之利用元素属性进行匹配
    时间戳的格式化
    简单实用的HTML中字符串的提取
    承接OpenCV Halcon视觉项目开发定制
  • 原文地址:https://www.cnblogs.com/swnuwangyun/p/556827.html
Copyright © 2011-2022 走看看