.net2.0 配置节

< configuration >
    
< configSections >
        
< section  name ="indexusNetSharedCache"  type ="MergeSystem.Indexus.WinServiceCommon.Configuration.Client.IndexusProviderSection, MergeSystem.Indexus.WinServiceCommon"
             
/>
    
</ configSections >
         
    
< indexusNetSharedCache  defaultProvider ="IndexusSharedCacheProvider" >
        
< servers >
            
< add  key ="SrvZh03"   ipaddress ="192.168.212.21"  port ="48888"   />
            
<!-- <add key="RoeePC"  ipaddress="10.0.0.15" port="48888" />
            <add key="MichaelPC"  ipaddress="10.0.0.53" port="48888" />
-->
        
</ servers >
        
< providers >
            
< add
        
name ="IndexusSharedCacheProvider"
        type
="MergeSystem.Indexus.WinServiceCommon.Provider.Cache.IndexusSharedCacheProvider, MergeSystem.Indexus.WinServiceCommon"
           
>
            
</ add >
        
</ providers >
    
</ indexusNetSharedCache >
 配置节 IndexusProviderSection ,其中 成员Servers和 Providers继承于System.Configuration.ConfigurationElementCollection, 而它聚合了System.Configuration.ConfigurationElement派生
ConfigurationElement的派生类包括了一序列的属性,这些属性可以定义默认值和限制取值范围

public   class  IndexusProviderSection : ConfigurationSection
    
{      
        [ConfigurationProperty(
"providers")]
        
public ProviderSettingsCollection Providers
        
{
            
get return (ProviderSettingsCollection)base["providers"]; }
        }


        
        [ConfigurationProperty(
"servers")]
        
public IndexusServerSettingCollection Servers
        
{
            
get return (IndexusServerSettingCollection)this["servers"]; }
        }


        
/// <summary>
        
/// Gets or sets the default provider, min. 1 server has to be defined.
        
/// </summary>
        
/// <value>The default provider.</value>

        [StringValidator(MinLength = 1)]
        [ConfigurationProperty(
"defaultProvider", DefaultValue = "IndexusSharedCacheProvider")]
        
public string DefaultProvider
        
{
            
get return (string)base["defaultProvider"]; }
            
set base["defaultProvider"= value; }
        }

    }

public   class  IndexusServerSettingCollection : System.Configuration.ConfigurationElementCollection
    
{

        
public IndexusServerSetting this[int index]
        
{
            
get
            
{
                
return base.BaseGet(index) as IndexusServerSetting;
            }

            
set
            
{
                
if (base.BaseGet(index) != null)
                
{
                    
base.BaseRemoveAt(index);
                }

                
this.BaseAdd(index, value);
            }

        }



        
protected override System.Configuration.ConfigurationElement CreateNewElement()
        
{
            
return new IndexusServerSetting();
        }


        
        
protected override object GetElementKey(System.Configuration.ConfigurationElement element)
        
{
            
return ((IndexusServerSetting)element).Key;
        }

    }


public   class  IndexusServerSetting : System.Configuration.ConfigurationElement
    
{
    
        [System.Configuration.ConfigurationProperty(
"key", IsRequired = true)]
        
public string Key
        
{
            
get
            
{
                
return this["key"as string;
            }

        }


        
        
protected override void InitializeDefault()
        
{
            
base.InitializeDefault();
        }

        
        [System.Configuration.ConfigurationProperty(
"ipaddress", IsRequired = true)]
        
public string IpAddress
        
{
            
get
            
{
                
return this["ipaddress"as string;
            }

        }

        
        [System.Configuration.ConfigurationProperty(
"port", IsRequired = false)]
        
public string Port
        
{
            
get
            
{
                
return this["port"as string;
            }

        }

    }

使用方法:
                 foreach  (COM.Configuration.Client.IndexusServerSetting server  in  IndexusDistributionCache.ProviderSection.Servers)
                
{
                    serverList.Add(server.IpAddress);
                }

providerCollection  =   new  IndexusProviderCollection();
                        ProvidersHelper.InstantiateProviders(
                                                                providerSection.Providers,
                                providerCollection,
                                
typeof (IndexusProviderBase)
                            );

                        providerBase 
=  providerCollection[providerSection.DefaultProvider];
Provider介绍

.net 1.1的做法
http://blog.csdn.net/anghlq/archive/2006/09/17/1233175.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值