using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
namespace Umbraco.Core.Configuration
{
///
/// Defines a configuration section that contains inner text that is comma delimited
///
internal class CommaDelimitedConfigurationElement : InnerTextConfigurationElement, IEnumerable
{
public override CommaDelimitedStringCollection Value
{
get
{
var converter = new CommaDelimitedStringCollectionConverter();
return (CommaDelimitedStringCollection) converter.ConvertFrom(RawValue);
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return new InnerEnumerator(Value.GetEnumerator());
}
IEnumerator IEnumerable.GetEnumerator()
{
return new InnerEnumerator(Value.GetEnumerator());
}
///
/// A wrapper for StringEnumerator since it doesn't explicitly implement IEnumerable
///
private class InnerEnumerator : IEnumerator
{
private readonly StringEnumerator _stringEnumerator;
public InnerEnumerator(StringEnumerator stringEnumerator)
{
_stringEnumerator = stringEnumerator;
}
public bool MoveNext()
{
return _stringEnumerator.MoveNext();
}
public void Reset()
{
_stringEnumerator.Reset();
}
string IEnumerator.Current
{
get { return _stringEnumerator.Current; }
}
public object Current
{
get { return _stringEnumerator.Current; }
}
public void Dispose()
{
_stringEnumerator.DisposeIfDisposable();
}
}
}
}