抽象配置工厂

  秉承一天写一篇的精神...今天的我又来了.....什么??前面有一天两天漏了??  哦..那天水浸啦...
写的虽然不是很多旷世巨作,不也相信也不是什么很垃圾的东西..比较都是些程序的积累...经验吧...

今天要现的是抽象配置工厂的实现
配置的实现:
    public class ProvidersHanders : IConfigurationSectionHandler
    
{
        
IConfigurationSectionHandler 成员
    }


实现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>
    
{

        
根据类型获取实例


        
/// <summary>
        
/// 获得实例
        
/// </summary>

        public static T Instance
        
{
            
get
            
{
                
return getInstance(ProvidersConfiguration.GetTypeByProviderName(typeof(T).Name));
            }

        }


    }

抽象配置父类...


  还有些东西没有摆出来...例如单个的配置啦..还是就是怎么样去使用它呀.....呵呵..有点懒...迟点记得再搞....

原文地址:https://www.cnblogs.com/yans/p/1225130.html