抽象配置工厂
秉承一天写一篇的精神...今天的我又来了.....什么??前面有一天两天漏了?? 哦..那天水浸啦...
写的虽然不是很多旷世巨作,不也相信也不是什么很垃圾的东西..比较都是些程序的积累...经验吧...
今天要现的是抽象配置工厂的实现
配置的实现:
写的虽然不是很多旷世巨作,不也相信也不是什么很垃圾的东西..比较都是些程序的积累...经验吧...
今天要现的是抽象配置工厂的实现
配置的实现:
public class ProvidersHanders : IConfigurationSectionHandler
{
IConfigurationSectionHandler 成员
}
实现configurationsectionhandler接口{
IConfigurationSectionHandler 成员
}
[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;
}
}
配置读取[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; }
}
}
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; }
}
}
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>
<section name="ProvidersConfig" type="yansComponents.Handlers.ProvidersHanders, yansComponents"/>
</configSections>
配置文件配置信息
/// <summary>
/// Providers模式父类
/// </summary>
/// <typeparam name="T"></typeparam>
public class BaseAbstract<T>
{
根据类型获取实例
/// <summary>
/// 获得实例
/// </summary>
public static T Instance
{
get
{
return getInstance(ProvidersConfiguration.GetTypeByProviderName(typeof(T).Name));
}
}
}
/// Providers模式父类
/// </summary>
/// <typeparam name="T"></typeparam>
public class BaseAbstract<T>
{
根据类型获取实例
/// <summary>
/// 获得实例
/// </summary>
public static T Instance
{
get
{
return getInstance(ProvidersConfiguration.GetTypeByProviderName(typeof(T).Name));
}
}
}
抽象配置父类...
还有些东西没有摆出来...例如单个的配置啦..还是就是怎么样去使用它呀.....呵呵..有点懒...迟点记得再搞....