zoukankan      html  css  js  c++  java
  • 单列模式(泛型版)

    View Code
     public static class SingletonProvider<T> where T : new()
        {
            
    private static T m_instance;
            
    private static readonly object sync = new object();
            
    /// <summary>
            
    /// 不够构造函数的泛型单列
            
    /// </summary>
            public static T Instance
            {
                
    get
                {
                    
    if (m_instance == null)
                    {
                        
    lock (sync)
                        {
                            
    if (m_instance == null)
                            {
                                
    try
                                {
                                    m_instance 
    = new T();
                                }
                                
    catch
                                {
                                }
                            }
                        }
                    }
                    
    return m_instance;
                }
            }
            
    /// <summary>
            
    /// 带构造函数的泛型单列模式
            
    /// </summary> 
            public static T InstanceForParameter(params object[] objarr)
            {

                
    if (m_instance == null)
                {
                    
    lock (sync)
                    {
                        
    if (m_instance == null)
                        {
                            var t 
    = typeof(T);
                            var tp 
    = new Type[objarr.Length];
                            
    for (int i = 0; i < objarr.Length; i++)
                            {
                                tp[i] 
    = objarr[i].GetType();
                            }
                            
    try
                            {
                                System.Reflection.ConstructorInfo ci 
    = t.GetConstructor(tp);
                                m_instance 
    = (T)ci.Invoke(objarr);
                            }
                            
    catch
                            {
                            }

                        }
                    }
                }
                
    return m_instance;
            }
        }
  • 相关阅读:
    TCHAR字符串查找&反向查找字符串
    如何判断一个文本文件的编码
    用NETSH WINSOCK RESET命令修复网络
    #define和typedef在windows上的应用
    Visual Studio Code (vscode)编译C++
    win32 Message(MSG)消息处理
    HBRUSH to RGB value
    InvalidateRect和UpdateWindow
    Informatic ETL开发步骤
    【非官方方式】获取Disconf动态更新的配置文件的值
  • 原文地址:https://www.cnblogs.com/jacd/p/1771136.html
Copyright © 2011-2022 走看看