gpt4 book ai didi

c# - 从自定义 Web 配置部分读取单个项目

转载 作者:行者123 更新时间:2023-11-30 21:05:04 26 4
gpt4 key购买 nike

我创建了一个自定义配置部分来存储项目列表。配置如下:

<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,如果只想要列表中的一个项目,这似乎有点多,特别是随着这个列表的增长,我不想加载 20 个项目,如果我只需要一个,还是这不是什么大问题?

最佳答案

我会说这不是一个大问题 - 加载 1 与 20 除非您有嵌套的 XML 配置,否则您不会在今天的机器上看到一个小问题。

ConfigurationManager还会缓存这些值,因此一旦您查询配置部分,它们就会保留在内存中以供后续请求使用。您可以使用 ConfigurationManager.RefreshSection("Items")刷新缓存。

关于c# - 从自定义 Web 配置部分读取单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11903270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com