带有嵌套ConfigurationElementCollections的ConfigurationSection

带有嵌套ConfigurationElementCollections的ConfigurationSection,configurationsection,Configurationsection,希望我能把这个问题提交给这个网站的智囊团,有人会看到我的错误 我正在从事一个项目,其中电子邮件文本需要与各种内部类的属性中的信息进行“邮件合并”。电子邮件文本中的典型符号可能类似“{member name}、{mobile phone}等” 我想使用web.config中的ConfigurationSection定义符号和它们所在的类。以下是我建议的配置部分: <EmailSymbols> <SymbolClasses> <SymbolCl

希望我能把这个问题提交给这个网站的智囊团,有人会看到我的错误

我正在从事一个项目,其中电子邮件文本需要与各种内部类的属性中的信息进行“邮件合并”。电子邮件文本中的典型符号可能类似“{member name}、{mobile phone}等”

我想使用web.config中的ConfigurationSection定义符号和它们所在的类。以下是我建议的配置部分:

<EmailSymbols>
    <SymbolClasses>

        <SymbolClass name="OHMember">
            <Symbol name="Member Name" template="{0} {1}">
                <add index="0" value="SMFirstName" />
                <add index="1" value="SMLastName" />
            </Symbol>
            <Symbol name="Phone" template="{0}">
                <add index="0" value="SMPhone" />
            </Symbol>
        </SymbolClass>

        <SymbolClass name="Form">
            <Symbol name="Contact Name" dataname="ContactName" />
        </SymbolClass>

    </SymbolClasses>
</EmailSymbols>
当我使用此语句分析节时: symbols=ConfigurationManager.GetSection(“EmailSymbols”)作为EmailSymbols

我收到此错误消息:“无法识别的元素‘符号’。”

这只是.NET的一个领域,我不知道该怎么做。任何人能给予的任何帮助都将不胜感激

我的XML定义有意义吗?格式是否正确?我想要一个SymbolClass集合,每个集合包含一个Symbol集合,每个集合包含一个TemplateValue集合

再次感谢你的帮助

致以最良好的祝愿,
Jimmy

您可以尝试覆盖
SymbolClass
类的
Init()
方法:

protected override void Init()
{
    base.Init();
    this.AddElementName = "Symbol";
}

您还可以从类声明上方删除
[ConfigurationCollection(typeof(SymbolClass),AddItemName=“SymbolClass”)]
和其他类似的声明,因为它们什么也不做。

您可以尝试覆盖
SymbolClass的
Init()
方法:

protected override void Init()
{
    base.Init();
    this.AddElementName = "Symbol";
}

您还可以从类声明上方删除
[ConfigurationCollection(typeof(SymbolClass),AddItemName=“SymbolClass”)]
和其他人,因为他们什么也不做。

您是否在配置文件顶部注册了该部分?是的。它一直解析到,然后我得到一个异常,错误是:“无法识别的元素‘Symbol’。”我已经用“AddItemName”声明了“Symbol”。如果我将Symbol添加为ConfigurationProperty,解析器将识别“Symbol”,但随后告诉我“Symbol”只能使用一次。它是重复的。这里有一个很好的答案:您是否在配置文件的顶部注册了该部分?是的。它一直解析到,然后我得到一个异常,错误是:“无法识别的元素‘Symbol’。”我已经用“AddItemName”声明了“Symbol”。如果我将Symbol添加为ConfigurationProperty,解析器将识别“Symbol”,但随后告诉我“Symbol”只能使用一次。它是重复的。这里有一个很好的答案: