ConfigurationElementCollection对象可以为其元素包含另一个ConfigurationElementCollection对象吗?

时间:2010-09-26 16:37:49

标签: c# configuration .net-2.0 web-config app-config

ConfigurationElementCollection对象可以为其元素包含另一个ConfigurationElementCollection对象吗?

我有这个xml,其中testsection是section root:

<testsection>
    <head>
        <metaData>
            <metaGroup id="general">
                <meta name="Content-type" content="text/html; charset=utf-8" type="http-equiv" />
            </metaGroup>
            <metaGroup id="default">
                <meta name="something" content="test" type="name" />
            </metaGroup>
        </metaData>
    </head>
</testsection>

是否可以使用可读取xml以上的ConfigurationSection,ConfigurationElement和ConfigurationElementCollection创建类?

问题在于,当我们实现ConfigurationElementCollection时,我们无法定义集合中的元素属于另一个ConfigurationElementCollection类型。

如果配置部分是这样的(没有metaGroup元素),我可以使它工作:

<testsection>
        <head>
            <metaData>
                    <meta name="Content-type" content="text/html; charset=utf-8" type="http-equiv" />
                    <meta name="something" content="test" type="name" />
            </metaData>
        </head>
    </testsection>

1 个答案:

答案 0 :(得分:1)

我认为只有ConfigurationElement对象可以包含ConfigurationElementCollection对象(ConfigurationElementCollection必须具有其父ConfigurationElement)。所以我认为如果metaGroup是ConfigurationElement并且我添加了一个新的ConfigurationElementCollection(metaGroupCollection)作为meta ConfigurationElement的父代,我可以解决这个问题。

<testsection>
        <head>
            <metaData>
                <metaGroup id="general">
                  <metaGroupCollection>
                      <meta name="Content-type" content="text/html; charset=utf-8" type="http-equiv" />
                  </metaGroupCollection>
                </metaGroup>
                <metaGroup id="default">
                  <metaGroupCollection>
                      <meta name="something" content="test" type="name" />
                  </metaGroupCollection>
                </metaGroup>
            </metaData>
        </head>
    </testsection>