我正在尝试在app.config中使用以下部分结构
<MyConfig>
<NewsFeeds site="abc">
<add name="first" />
</NewsFeeds>
<NewsFeeds site="zyx">
<add name="another" />
</NewsFeeds>
</MyConfig>
我已经有MyConfig
部分工作,但我不确定应该如何编码NewsFeed
集合,或者这个结构是否可行。现在我到目前为止有以下课程:
[ConfigurationCollection(typeof(NewsFeedConfig))]
public class NewsFeedConfigCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new NewsFeedConfig();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((NewsFeedConfig)(element)).Name;
}
public NewsFeedConfig this[int idx] { get { return (NewsFeedConfig)BaseGet(idx); } }
}
public class NewsFeedConfig : ConfigurationElement
{
[ConfigurationProperty("name", IsKey = true, IsRequired = true)]
public string Name
{
get { return (string)base["name"]; }
set { base["name"] = value; }
}
[ConfigurationProperty("source", IsRequired = true)]
public string Source
{
get { return (string)base["source"]; }
set { base["source"] = value; }
}
}
但是,这要求所有新闻Feed都在一个新闻Feed集合下,然后我必须通过向每个元素添加Site
属性来手动解析它们。那很好,但是可以用上面定义的XML工作的方式来实现吗?
答案 0 :(得分:0)
我想你会在这里找到答案:Sections must only appear once per config file! why?
您可能希望将xml重构为更像:
<MyConfig>
<NewsFeed site="abc">
<Feeds>
<Feed name="first" />
</Feeds>
</NewsFeed>
<NewsFeed site="zyx">
<Feeds>
<Feed name="second" />
<Feed name="third" />
<Feed name="fourth" />
</Feeds>
</NewsFeed>
</MyConfig>