从自定义配置c#中检索多个密钥
本文关键字:密钥 检索 自定义 配置 | 更新日期: 2023-09-27 18:19:41
我的应用程序配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="Database" type="Database_Server_Settings.Database_Server_SettingsConfigSection, BMS Internal Database Restore" />
</configSections>
<Database>
<Databases>
<add id="BMSCarlyle" Server_Name="bmslondon01" Database_Name="Everest_Carlyle" Database_Backup_Location="D:'SQL Backups'Carlyle'Everest_Carlyle.bak" TradeDesk_Location="C:'Program Files'Microsoft SQL Server'MSSQL10_50.MSSQLSERVER'MSSQL'DATA'Carlyle.mdf" TradeDesk_Log_Location="C:'Program Files'Microsoft SQL Server'MSSQL10_50.MSSQLSERVER'MSSQL'DATA'Carlyle_log.ldf" />
<add id="bmsnim" Server_Name="bmslondon01" Database_Name="Everst_Nim" Database_Backup_Location="D:'SQL Backups'Carlyle'Everest_Carlyle.bak" TradeDesk_Location="C:'Program Files'Microsoft SQL Server'MSSQL10_50.MSSQLSERVER'MSSQL'DATA'Carlyle.mdf" TradeDesk_Log_Location="C:'Program Files'Microsoft SQL Server'MSSQL10_50.MSSQLSERVER'MSSQL'DATA'Carlyle_log.ldf" />
</Databases>
</Database>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
现在,当我尝试像这个一样检索它时
DBID.Items.Add(section.DatabaseSettings["BMSCarlyle"].id)
我取回身份证完全没问题。
然而,我想把所有的ID添加到我的列表中,而不仅仅是BMSCaryle,因此
DBID.Items.Add(section.DatabaseSettings[].id)
然而,这似乎并不奏效。有人能建议我在"[]"
之间放些什么吗?
Dave这是处理程序代码
namespace Database_Server_Settings
{
public class Database_Server_SettingsConfigSection : ConfigurationSection
{
[ConfigurationProperty("Databases")]
public DatabaseCollection DatabaseSettings
{
get
{
return ((DatabaseCollection)(base["Databases"]));
}
}
}
[ConfigurationCollection( typeof (DatabaseElement))]
public class DatabaseCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new DatabaseElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((DatabaseElement)(element)).id;
}
public DatabaseElement this [string idx]
{
get
{
return (DatabaseElement)BaseGet(idx);
}
}
}
public class DatabaseElement : ConfigurationElement
{
[ConfigurationProperty("id", DefaultValue="", IsKey=true, IsRequired=true)]
public string id
{
get
{
return ((string)(base["id"]));
}
set
{
base["id"] = value;
}
}
[ConfigurationProperty("Server_Name", DefaultValue="", IsKey=false, IsRequired=false)]
public string Server_Name
{
get
{
return ((string)(base["Server_Name"]));
}
set
{
base["Server_Name"] = value;
}
}
[ConfigurationProperty("Database_Name", DefaultValue = "", IsKey = false, IsRequired = false)]
public string Database_Name
{
get
{
return ((string)(base["Database_Name"]));
}
set
{
base["Database_Name"] = value;
}
}
[ConfigurationProperty("Database_Backup_Location", DefaultValue = "", IsKey = false, IsRequired = false)]
public string Database_Backup_Location
{
get
{
return ((string)(base["Database_Backup_Location"]));
}
set
{
base["Database_Backup_Location"] = value;
}
}
[ConfigurationProperty("TradeDesk_Location", DefaultValue = "", IsKey = false, IsRequired = false)]
public string TradeDesk_Location
{
get
{
return ((string)(base["TradeDesk_Location"]));
}
set
{
base["TradeDesk_Location"] = value;
}
}
[ConfigurationProperty("TradeDesk_Log_Location", DefaultValue = "", IsKey = false, IsRequired = false)]
public string TradeDesk_Log_Location
{
get
{
return ((string)(base["TradeDesk_Log_Location"]));
}
set
{
base["TradeDesk_Log_Location"] = value;
}
}
}
}
看看你是否有DBID.Items.AddRange
方法,然后第一个例子,否则第二个选项-
DBID.Items.AddRange(section.DatabaseSettings.Select(p=>p.id).ToList());
或
foreach(var item in section.DatabaseSettings.Select(p=>p.id))
{
DBID.Items.Add(item);
}
[ConfigurationCollection( typeof (DatabaseElement))]
public class DatabaseCollection : ConfigurationElementCollection, IEnumerable<DatabaseElement>
{
protected override ConfigurationElement CreateNewElement()
{
return new DatabaseElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((DatabaseElement)(element)).id;
}
public DatabaseElement this [string idx]
{
get
{
return (DatabaseElement)BaseGet(idx);
}
}
#region IEnumerable<DatabaseElement> Members
public new IEnumerator<DatabaseElement> GetEnumerator()
{
int count = base.Count;
for (int i = 0; i < count; i++)
{
yield return base.BaseGet(i) as DatabaseElement;
}
}
#endregion
}