zoukankan      html  css  js  c++  java
  • mojoPortalprovider模式学习之1.1之IndexBuilderManager

    第四步 Provider Manager 类

    这个类根据 第三步中的 Provider Configuration类中的配置信息,实例化Provider.

      public sealed class IndexBuilderManager
        
    {
            
    //private static bool isInitialized = false;
            
    //private static Exception initializationException;
            private static object initializationLock = new object();
            
    private static readonly ILog log
                
    = LogManager.GetLogger(typeof(IndexBuilderManager));


            
    //在构造函数中调用初始化方法
            static IndexBuilderManager()
            
    {
                Initialize();
            }


            
    //根据配置文件中的信息,实例化provider,并放到ProviderCollection中
            private static void Initialize()
            
    {
                providerCollection 
    = new IndexBuilderProviderCollection();

                
    try
                
    {
                    IndexBuilderConfiguration config 
                        
    = IndexBuilderConfiguration.GetConfig();

                    
    if (config != null)
                    
    {

                        
    if (
                            (config.Providers 
    == null)
                            
    || (config.Providers.Count < 1)
                            )
                        
    {
                            
    throw new ProviderException("No IndexBuilderProvider found.");
                        }


                        
    //实例化Provider的具体方法
                        ProvidersHelper.InstantiateProviders(
                            config.Providers,
                            providerCollection,
                            
    typeof(IndexBuilderProvider));

                    }

                    
    else
                    
    {
                        
    // config was null, not a good thing
                        log.Error("IndexBuilderConfiguration could not be loaded so empty provider collection was returned");

                    }

                }

                
    catch (NullReferenceException ex)
                
    {
                    log.Error(ex);
                }

                
    catch (TypeInitializationException ex)
                
    {
                    log.Error(ex);
                }

                
    catch (ProviderException ex)
                
    {
                    log.Error(ex);
                }

                
                providerCollection.SetReadOnly();
                    
                
    //}
                
    //catch (Exception ex)
                
    //{
                
    //    log.Error(ex);
                
    //    initializationException = ex;
                
    //    isInitialized = false;
                
    //    //throw ex;
                
    //    return;
                
    //}

                
    //isInitialized = true; 
            }



            
    private static IndexBuilderProviderCollection providerCollection;

            
    public static IndexBuilderProviderCollection Providers
            
    {
                
    get
                
    {
                    
    //try
                    
    //{
                        if (providerCollection == null) Initialize();
                        
    return providerCollection;
                    
    //}
                    
    //catch (NullReferenceException ex)
                    
    //{
                    
    //    log.Error(ex);  
                    
    //}
                    
    //catch (TypeInitializationException ex)
                    
    //{
                    
    //    log.Error(ex);
                    
    //}
                    
    //catch (ProviderException ex)
                    
    //{
                    
    //    log.Error(ex);  
                    
    //}

                    
    return null;
                }

            }

        }
  • 相关阅读:
    【BZOJ4275】[ONTAK2015]Badania naukowe DP
    【BZOJ4295】[PA2015]Hazard 乱搞
    【BZOJ4297】[PA2015]Rozstaw szyn 树形DP
    Windows服务安装异常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security
    直关的sql 联级更新语句
    c#经典俄罗斯方块 vs2012开发
    转 SSIS处理导入数据时, 存在的更新, 不存在的插入
    WM (Constants)
    数据仓库的模型设计
    BI (商业智能)
  • 原文地址:https://www.cnblogs.com/wenjie/p/1167562.html
Copyright © 2011-2022 走看看