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

            }

        }

    }


  • 相关阅读:
    Exceptionless in Docker on Linux 搭建及部署疑难杂症
    Golang 基础语法介绍及对比(二)
    Go Windows 环境安装及配置(一)
    ElasticSearch搜索解析
    ElasticSearch文档及分布式文档存储
    ElasticSearch利用IK实现全文搜索
    ElasticSearch简要总览
    轻松驾驭统计学——数据分析必备技能
    【面试】数据分析常见问题
    【Echarts】
  • 原文地址:https://www.cnblogs.com/swnuwangyun/p/556827.html
Copyright © 2011-2022 走看看