【发布时间】:2012-12-12 21:34:35
【问题描述】:
我已经实现了这样的自定义配置部分
<directorySettings>
<domainConfigurationList>
<domainConfiguration id="1" name="name1" url="http://www.google.com"/>
<domainConfiguration id="2" name="name2" url="http://www.bing.com"/>
</domainConfigurationList>
</directorySettings>
我只能将一个字段设置为键:
protected override object GetElementKey(ConfigurationElement element)
{
return ((DirectorySettingsConfigurationElement)element).Name;
}
但我还需要不仅可以通过键“名称”进行搜索,还可以通过字段“id”进行搜索。这是我的DirectorySettingsConfigurationElementCollection的一部分:
public DirectorySettingsConfigurationElement Get(string name)
{
return (DirectorySettingsConfigurationElement)BaseGet(name);
}
public DirectorySettingsConfigurationElement GetById(int id)
{
// ???
return null;
}
通过自定义字段(不是按键)获取我的DirectorySettingsConfigurationElement 的最佳方式是什么
【问题讨论】:
-
迭代这组值,直到你有一个具有匹配 ID 的值。对于小型套装,这不会太贵。 (如果你想让它在更大的集合中表现更好,那么你可以使用一个哈希表,例如字典。)
-
Paul,我该如何迭代它?无法访问元素集合..
-
解决了! ConfigurationElementCollection 有 GetEnumerator 方法 - 我可以用它来迭代
-
你不需要调用
GetEnumerator:该类型实现了IEnumerable,所以你可以使用foreach。foreach (ConfigurationElement elephant in blah) { ... }. -
是的,在我的情况下是 foreach(var item in this) { ... }
标签: c# web-config app-config