アイテムのリストを保存するカスタム構成セクションを作成しました。構成は次のとおりです。
<configSections>
<section name="Items" type="namespace.Items, namespace"/>
</configSections>
<Items>
<Item name="Item1"/>
<Item name="Item2"/>
</Items>
また、次のように独自の構成ハンドラーを作成しました。
public class ItemConfigurationHandler : IConfigurationSectionHandler
{
public ItemConfigurationHandler()
{
}
public object Create(object parent, object configContext, System.Xml.XmlNode section)
{
List<Item> items = new List<Item>();
System.Xml.XmlNodeList items = section.SelectNodes("Item");
foreach (XmlNode i in items)
{
Item item = new Item();
item.Name = i.Attributes["name"].InnerText;
items.Add(item);
}
return items;
}
}
これは現在正常に機能しており、次のように構成からアイテムのリストを取得できます。
List<Item> ts = (List<Item>)ConfigurationManager.GetSection("Items");
疑問に思っていますが、単一のアイテムだけを取得することは可能ですか? たとえば、「Item1」のみの詳細が必要な場合。リストを正常に取得してから、 name = "Item1" でフィルター処理できますが、これはすべての XML をロードすることを意味します。リストから 1 つのアイテムのみが必要な場合、特にこのリストが大きくなると、20 個のアイテムをロードしたくありません。必要なのは 1 つだけですか、それともあまり問題になりませんか?