从自定义配置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;
            }
        }
    }
}

从自定义配置c#中检索多个密钥

看看你是否有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
    }