Чтение из пользовательской конфигурации в App.config
У меня проблемы с чтением из App.config.
Это мой App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="InterestRates_A" type="InterestRates_A_Configuration" />
</configSections>
<InterestRates_A>
<InterestRate_A band="0" validFrom="" validTo="2004-12-31" rate="0.00000"/>
<InterestRate_A band="1" validFrom="2005-01-01" validTo="2005-12-31" rate="0.04247"/>
<InterestRate_A band="2" validFrom="2006-01-01" validTo="2006-12-31" rate="0.02986"/>
<InterestRate_A band="3" validFrom="2007-01-01" validTo="2009-10-30" rate="0.02740"/>
<InterestRate_A band="4" validFrom="2009-10-31" validTo="" rate="0.02470"/>
</InterestRates_A>
</configuration>
Это мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Interest
{
public class InterestRate_A : ConfigurationElement
{
[ConfigurationProperty("band", IsRequired = true)]
public string Band
{
get
{
return this["band"] as string;
}
}
[ConfigurationProperty("validFrom", IsRequired = true)]
public string ValidFrom
{
get
{
return this["ValidFrom"] as string;
}
}
[ConfigurationProperty("validTo", IsRequired = true)]
public string ValidTo
{
get
{
return this["validTo"] as string;
}
}
[ConfigurationProperty("rate", IsRequired = true)]
public string Rate
{
get
{
return this["rate"] as string;
}
}
}
public class InterestRates_A : ConfigurationElementCollection
{
public InterestRate_A this[int index]
{
get
{
return base.BaseGet(index) as InterestRate_A;
}
set
{
if (base.BaseGet(index) != null)
{
base.BaseRemoveAt(index);
}
this.BaseAdd(index, value);
}
}
public new InterestRate_A this[string responseString]
{
get { return (InterestRate_A)BaseGet(responseString); }
set
{
if (BaseGet(responseString) != null)
{
BaseRemoveAt(BaseIndexOf(BaseGet(responseString)));
}
BaseAdd(value);
}
}
protected override System.Configuration.ConfigurationElement CreateNewElement()
{
return new InterestRate_A();
}
protected override object GetElementKey(System.Configuration.ConfigurationElement element)
{
return ((InterestRate_A)element).Band;
}
}
public class InterestRates_A_Configuration : ConfigurationSection
{
public static InterestRates_A_Configuration GetConfig()
{
return (InterestRates_A_Configuration)System.Configuration.ConfigurationManager.GetSection("InterestRates_A") ?? new InterestRates_A_Configuration();
}
[System.Configuration.ConfigurationProperty("InterestRates_A")]
[ConfigurationCollection(typeof(InterestRates_A), AddItemName = "InterestRate_A")]
public InterestRates_A InterestRates_A
{
get
{
object o = this["InterestRates_A"];
return o as InterestRates_A;
}
}
}
}
Вот как я это называю:
foreach (var item in config.InterestRates_A)
{
}
Проблема в том, что он вообще не находит раздел. Что мне здесь не хватает? Заранее спасибо всем, что потребуется время, чтобы выручить меня!
PS: Как только я заверну это, я также хотел бы добавить больше разделов конфигурации.
1 ответ
Без некоторой детальной проверки вашего кода, похоже, что ваш тип раздела не определен должным образом, type="Interest.InterestRates_A_Configuration"
Кстати, было бы лучше, если бы вы прочитали эту углубленную статью, охватывающую все, что вам нужно сейчас о конфигурации.net.