using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace dasBlog.Storage.Configuration{
public sealed class StorageBusSection : ConfigurationSection
{
// Fields
private static ConfigurationPropertyCollection _properties = new ConfigurationPropertyCollection();
private static readonly ConfigurationProperty _propScopes = new ConfigurationProperty(null, typeof(ScopeElementCollection), null, ConfigurationPropertyOptions.IsDefaultCollection);
// Methods
static StorageBusSection()
{
_properties.Add(_propScopes);
}
// Properties
protected override ConfigurationPropertyCollection Properties
{
get
{
return _properties;
}
}
[ConfigurationProperty("", IsDefaultCollection = true)]
public ScopeElementCollection Scopes
{
get
{
return (ScopeElementCollection)base[_propScopes];
}
}
}
public sealed class ScopeElementCollection : ConfigurationElementCollection
{
// Methods
public void Add(ScopeElement element)
{
this.BaseAdd(element);
}
public void Clear()
{
base.BaseClear();
}
protected override ConfigurationElement CreateNewElement()
{
return new ScopeElement();
}
public ScopeElement Get(string elementKey)
{
return (ScopeElement)base.BaseGet(elementKey);
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((ScopeElement)element).Key;
}
public void Remove(ScopeElement element)
{
base.BaseRemove(this.GetElementKey(element));
}
// Properties
public override ConfigurationElementCollectionType CollectionType
{
get
{
return ConfigurationElementCollectionType.BasicMap;
}
}
protected override string ElementName
{
get
{
return "scope";
}
}
}
public sealed class ScopeElement : ConfigurationElement
{
// Fields
private static ConfigurationPropertyCollection _properties =
new ConfigurationPropertyCollection();
private static readonly ConfigurationProperty _propName =
new ConfigurationProperty("name", typeof(string), "",
ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsRequired);
private static readonly ConfigurationProperty _propUriLayout =
new ConfigurationProperty("uriLayout", typeof(string), "",
ConfigurationPropertyOptions.IsRequired);
// Methods
static ScopeElement()
{
_properties.Add(_propName);
_properties.Add(_propUriLayout);
}
public ScopeElement()
{
}
public ScopeElement(string name, string uriLayout)
: this()
{
this.Name = name;
this.UriLayout = uriLayout;
}
public override bool Equals(object StorageBus)
{
ScopeElement element = StorageBus as ScopeElement;
if ((element != null) && base.Equals(StorageBus))
{
return object.Equals(this.Name, element.Name);
}
return false;
}
public override int GetHashCode()
{
return (base.GetHashCode() ^ this.UriLayout.GetHashCode());
}
// Properties
internal string Key
{
get
{
return this.Name;
}
}
[ConfigurationProperty("name", IsRequired = true, IsKey = true, DefaultValue = "")]
public string Name
{
get
{
return (string)base[_propName];
}
set
{
base[_propName] = value;
}
}
protected override ConfigurationPropertyCollection Properties
{
get
{
return _properties;
}
}
[ConfigurationProperty("uriLayout", IsRequired = true, DefaultValue = null)]
public string UriLayout
{
get
{
return (string)base[_propUriLayout];
}
set
{
base[_propUriLayout] = value;
}
}
}
}
|