我正在尝试设置应用程序配置。问题是没有任何东西是从配置中获取的。我正在使用此代码:
节数:
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);
}
可能是什么问题?
答案 0 :(得分:3)
我已经在xml中改变了一些东西并且有效。
1.删除部分组标记
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>