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
;
}
}
}
查看全文
相关阅读:
异步编程系列第04章 编写Async方法
异步编程系列第03章 自己写异步代码
异步编程系列第02章 你有什么理由使用Async异步编程
异步编程系列第01章 Async异步编程简介
初探asp.net异步编程之await
Sql Server 覆盖索引
把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)
redis+cookies实现session机制(解决 手机浏览器不自动回传cookies导致session不可用问题)
把阅读当作一种人生习惯来培养
SAS中的剔除空格函数
原文地址:https://www.cnblogs.com/wenjie/p/1167562.html
最新文章
C# winfrom 整个界面重绘
C# 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
C# 控件线程匿名委托定义
微信小程序修改radio和checkbox的默认样式和图标
数组元素的上移、下移
JS---函数名和变量名重名
tinymce富文本是在modal框中弹出显示的问题
git diff 的简单使用(比较版本区别)
JS的日期的知识与格式化
javascript数字格式化通用类——accounting.js使用
热门文章
vue阻止右键默认行为
vue 通过 name 和 params 进行调整页面传参刷新参数丢失问题&vue路由可选参数
前端博客微信群一周面试题汇总
Redis所需内存 超过可用内存怎么办
Redis锁的简单应用
redis主从复制 从而 数据备份和读写分离
.NET基础架构方法—DataTableToExcel通用方法
EventBus的思路和一些反思
异步编程系列06章 以Task为基础的异步模式(TAP)
异步编程系列第05章 Await究竟做了什么?
Copyright © 2011-2022 走看看