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(); } } } }