我创建了一个自定义配置部分来存储项目列表。配置如下:
<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”的详细信息。我可以成功检索列表,然后过滤 where name = "Item1" 但这意味着加载所有 XML 如果只想要列表中的一个项目,这似乎有点多,特别是随着这个列表的增长,我不想加载 20 个项目如果我只需要一个,或者这不是什么大问题?