<
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 >
< 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 >
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; }
}
}
{
[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 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;
}
}
}
{
[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);
}
{
serverList.Add(server.IpAddress);
}
providerCollection
=
new
IndexusProviderCollection();
ProvidersHelper.InstantiateProviders(
providerSection.Providers,
providerCollection,
typeof (IndexusProviderBase)
);
providerBase = providerCollection[providerSection.DefaultProvider];
ProvidersHelper.InstantiateProviders(
providerSection.Providers,
providerCollection,
typeof (IndexusProviderBase)
);
providerBase = providerCollection[providerSection.DefaultProvider];
.net 1.1的做法
http://blog.csdn.net/anghlq/archive/2006/09/17/1233175.aspx