现在的位置: 首页 > 综合 > 正文

.net2.0 配置节

2013年03月19日 ⁄ 综合 ⁄ 共 4494字 ⁄ 字号 评论关闭
<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

抱歉!评论已关闭.