zoukankan
html css js c++ java
抽象配置工厂
秉承一天写一篇的精神...今天的我又来了.....什么??前面有一天两天漏了?? 哦..那天水浸啦...
写的虽然不是很多旷世巨作,不也相信也不是什么很垃圾的东西..比较都是些程序的积累...经验吧...
今天要现的是
抽象配置工厂
的实现
配置的实现:
public
class
ProvidersHanders : IConfigurationSectionHandler
{
IConfigurationSectionHandler 成员
#region
IConfigurationSectionHandler 成员
public
object
Create(
object
parent,
object
configContext, System.Xml.XmlNode section)
{
XmlSerializer ser
=
new
XmlSerializer(
typeof
(ProvidersConfiguration));
return
ser.Deserialize(
new
XmlNodeReader(section));
}
#endregion
}
实现configurationsectionhandler接口
[Serializable()]
[XmlRoot(
"
ProvidersConfig
"
)]
public
class
ProvidersConfiguration
{
private
ProvidersCollection providers;
private
static
yansCache cache
=
yansCache.Instance;
public
ProvidersCollection Providers
{
get
{
return
providers; }
set
{ providers
=
value; }
}
public
static
ProvidersConfiguration GetConfig
{
get
{
if
(
null
==
cache[
"
ProvidersConfig
"
])
{
cache.Max(
"
ProvidersConfig
"
, ConfigurationManager.GetSection(
"
ProvidersConfig
"
));
}
return
(ProvidersConfiguration)cache[
"
ProvidersConfig
"
];
}
}
public
static
Type GetTypeByProviderName(
string
ProviderName)
{
foreach
(SingleProvider sp
in
GetConfig.Providers)
{
if
(sp.ProviderName
==
ProviderName)
{
return
Type.GetType(sp.Type);
}
}
throw
new
ArgumentNullException(
"
找不到类型:
"
+
ProviderName);
return
null
;
}
}
配置读取
[Serializable()]
public
class
ProvidersCollection : CollectionBase
{
public
virtual
void
Add(SingleProvider p)
{
InnerList.Add(p);
}
public
SingleProvider
this
[
int
index]
{
get
{
return
(SingleProvider)InnerList[index]; }
set
{ InnerList[index]
=
value; }
}
}
配置集合
[Serializable()]
public
class
SingleProvider
{
private
string
type;
public
string
Type
{
get
{
return
type; }
set
{ type
=
value; }
}
private
string
providerName;
public
string
ProviderName
{
get
{
return
providerName; }
set
{ providerName
=
value; }
}
}
单条配置
<
configSections
>
<
section
name
="ProvidersConfig"
type
="yansComponents.Handlers.ProvidersHanders, yansComponents"
/>
</
configSections
>
配置文件配置信息
/**/
///
<summary>
///
Providers模式父类
///
</summary>
///
<typeparam name="T"></typeparam>
public
class
BaseAbstract
<
T
>
{
根据类型获取实例
#region
根据类型获取实例
class
Ret
{
static
Ret()
{ }
//
internal static Hashtable instance = new Hashtable();
private
static
T instance;
public
static
T CreateInstance(Type type)
{
//
if (!instance.Contains(type.FullName))
//
{
//
instance.Add(type.FullName, (T)Activator.CreateInstance(type));
//
}
if
(
null
==
instance)
{
instance
=
(T)Activator.CreateInstance(type);
}
//
return (T)instance[type.FullName];
return
instance;
}
}
/**/
///
<summary>
///
根据类型返回一个实例
///
</summary>
///
<param name="type">
类型
</param>
///
<returns></returns>
public
static
T getInstance(Type type)
{
return
CreateInstance(type);
}
/**/
///
<summary>
///
创建实例
///
</summary>
///
<param name="type"></param>
///
<returns></returns>
protected
static
T CreateInstance(Type type)
{
if
(
null
==
type)
{
ThrowExceptionWhileTypeIsNull(type,
"
提交的类型不存在或为空,创建实例失败。
"
);
return
default
(T);
}
return
Ret.CreateInstance(type);
}
/**/
///
<summary>
///
提交的类型不存在或为空
///
</summary>
///
<param name="type"></param>
protected
static
void
ThrowExceptionWhileTypeIsNull(Type type,
string
ErrMessage)
{
throw
new
ArgumentNullException(ErrMessage);
}
#endregion
/**/
///
<summary>
///
获得实例
///
</summary>
public
static
T Instance
{
get
{
return
getInstance(ProvidersConfiguration.GetTypeByProviderName(
typeof
(T).Name));
}
}
}
抽象配置父类...
还有些东西没有摆出来...例如单个的配置啦..还是就是怎么样去使用它呀.....呵呵..有点懒...迟点记得再搞....
查看全文
相关阅读:
团队作业第二次—项目选题报告(葫芦娃)
软工实践|结对第二次—文献摘要热词统计及进阶需求
软工实践|结对第一次—原型设计(文献摘要热词统计)
软件工程|第一次作业-准备篇
个人作业--软件工程实践总结作业
团队作业第二次—项目选题报告(葫芦娃队)
结对第二次--文献摘要热词统计及进阶需求
结对第一次—原型设计(文献摘要热词统计)
第一次作业-准备篇
个人作业——软件工程实践总结作业
原文地址:https://www.cnblogs.com/yans/p/1225130.html
最新文章
CSDN页面打印PDF完美格式
个人作业——软件工程实践总结作业
团队作业第二次—项目选题报告
结对第二次-文章摘要热词统计
结对第一次—原型设计(文献摘要热词统计)
第一次作业-准备篇
个人作业——软件工程实践总结作业
团队作业第二次—项目选题报告
结对第二次—文献摘要热词统计及进阶需求
结对第一次—原型设计(文献摘要热词统计)
热门文章
第一次作业-准备篇
个人作业——软件工程实践总结作业
团队作业第二次—项目选题报告(葫芦娃队)
结对第二次—文献摘要热词统计及进阶需求
结对第一次—原型设计(文献摘要热词统计)
第一次作业-准备篇
公共事件查询与分析平台FAQ
公共事件查询与分析平台使用指南
总结
Unity点击播放卡死问题的解决
Copyright © 2011-2022 走看看