Вытащить список элементов xml из web.config - PullRequest
1 голос
/ 10 марта 2012

У меня есть пользовательские настройки конфигурации.

public class GalleryResizeOptionsElement : ConfigurationElement
{
    [ConfigurationProperty("name")]
    public string Name
    {
        get { return (string)this["name"]; }
    }

    [ConfigurationProperty("width")]
    public int Width
    {
        get { return (int)this["width"]; }
    }

    [ConfigurationProperty("height")]
    public int Height
    {
        get { return (int)this["height"]; }
    }
}

public class GalleryResizeOptionsCollection : ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement()
    {
        return new GalleryResizeOptionsElement();
    }

    protected override object GetElementKey(ConfigurationElement element)
    {
        return ((GalleryResizeOptionsElement)element).Name;
    }


    public override ConfigurationElementCollectionType CollectionType
    {
        get { return ConfigurationElementCollectionType.BasicMap; }
    }

    /// <summary>
    /// The element name of the configuration elements in the config file,
    /// as set at UserCommandConfigurationConstants.ElementName
    /// </summary>
    protected override string ElementName
    {
        get { return "add"; }
    }

    /// <summary>
    /// This is a convenience added to allow selection from the collection
    /// via the commandkey as an index
    /// </summary>
    /// <returns></returns>
    public GalleryResizeOptionsElement this[string name]
    {
        get { return (GalleryResizeOptionsElement)this.BaseGet(name); }
    }
}

public class GalleryConfigurationSection : ConfigurationSection
{

    public virtual GalleryResizeOptionsCollection ResizeOptions
    {
        get { return (GalleryResizeOptionsCollection) base["resizeOptions"]; }
    }
}

Добавьте в файл web.config раздел, содержащий эту конфигурацию xml.

<resizeOptions>
        <add name="Square" width="100" height="100" />
        <add name="Rectangle" width="200" height="100" />
        <add name="Hero" width="600" height="400" />
      </resizeOptions>

Для краткости я оставил много другого кода, но думаю, что включил все, что требуется, чтобы задать свой вопрос.

Как мне изменить GalleryResizeOptionsCollection, чтобы я мог вернуть список всех элементов GalleryResizeOptionsElements? Или, проще говоря, я хочу иметь возможность вернуть список всех элементов «add».

1 Ответ

0 голосов
/ 21 марта 2012

Вы можете использовать System.Linq, чтобы вернуть список элементов:

using System.Linq;

public class GalleryResizeOptionsCollection : ConfigurationElementCollection
{
   //...

   public IList<GalleryResizeOptionsElement> ToList()
   {
      return this.Cast<GalleryResizeOptionsElement>().ToList();
   }
}
...