应用程序的配置
本文关键字:配置 应用程序 | 更新日期: 2023-09-27 18:17:21
我正在尝试设置应用程序配置。问题是没有从配置中读取任何内容。我正在使用这个代码:
部分:
public class TownSection : ConfigurationSection
{
public static TownSection.GetConfig()
{
return (TownSection)System.Configuration.ConfigurationManager
.GetSection("TownSection") ?? new TownSection();
}
[System.Configuration.ConfigurationProperty("TownProperties")]
[ConfigurationCollection(typeof(TownProperties), AddItemName = "TownProperty")]
public TownProperties TownProperties
{
get
{
object o = this["TownProperties"];
return o as TownProperties;
}
}
}
实体列表:
public class TownProperties: ConfigurationElementCollection
{
public TownProperty this[int index]
{
get
{
return base.BaseGet(index) as TownProperty ;
}
set
{
if (base.BaseGet(index) != null)
{
base.BaseRemoveAt(index);
}
this.BaseAdd(index, value);
}
}
public new TownProperty this[string responseString]
{
get { return (TownProperty)BaseGet(responseString); }
set
{
if (BaseGet(responseString) != null)
{
BaseRemoveAt(BaseIndexOf(BaseGet(responseString)));
}
BaseAdd(value);
}
}
protected override System.Configuration.ConfigurationElement CreateNewElement()
{
return new TownProperty();
}
protected override object GetElementKey(System.Configuration.ConfigurationElement element)
{
return ((TownProperty)element).Name;
}
}
实体: public class TownProperty: ConfigurationElement
{
[ConfigurationProperty("Name", IsRequired = true)]
public string Name
{
get
{
return this["Name"] as string;
}
}
[ConfigurationProperty("Distance", IsRequired = true)]
public string Distance
{
get
{
return this["Distance"] as string;
}
}
}
app.config中的配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="TownSection">
<section
name="TownSection"
type="App.Configurations.TownSection"
allowLocation="true"
allowDefinition="Everywhere" />
</sectionGroup>
</configSections>
<TownSection>
<TownProperties>
<TownProperty Name="A" Distance="1.8"/>
<TownProperty Name="B" Distance="5.8"/>
</TownProperties>
</TownSection>
在代码: var config = TownSection.GetConfig();
foreach(TownProperty item in config.TownProperties) /// cycle is skipped
{
Console.WriteLine(item.Name);
Console.WriteLine(item.Distance);
}
有什么问题吗?
我在xml中修改了一些东西,这是可行的。
1。删除Section组标签
2。在section
标签的type属性中增加了程序集名称。格式(完整类型名称,程序集名称)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section
name="TownSection"
type="App.Configurations.TownSection, App.Configurations"
allowLocation="true"
allowDefinition="Everywhere" />
</configSections>
<TownSection>
<TownProperties>
<TownProperty Name="A" Distance="1.8"/>
<TownProperty Name="B" Distance="5.8"/>
</TownProperties>
</TownSection>
</configuration>