asp.net - 嵌套自定义配置元素集合

标签 asp.net nested custom-configuration

我正在尝试为我目前参与的 asp.net 项目实现自定义配置解决方案。

这里是配置声明

    <sectionGroup name="WebsiteConfig" type="{namespace}.{class}, {assembly}">
        <section name="Languages" type="{namespace}.{class}, {assembly}"/>
        <section name="LinkFormats" type="{namespace}.{class}, {assembly}"/>
        <section name="Countries" type="{namespace}.{class}, {assembly}"/>
    </sectionGroup>

这是我尝试使用的实际配置

<WebsiteConfig>

    <Languages>
        <Language code="en" domain="...">
            <Theme .../>
            <SiteMap ..."/>
        </Language>
        <Language code="de" domain="...">
            <Theme .../>
            <SiteMap .../>
        </Language>
    </Languages>

    <Countries>
        <Country Code="UK">
            <Files>
                <File name="..." fileUrl="..." enabled="true" />
                <File ... />
            </Files>
            <Messages>
                <Message Enabled="true" Message="..." />
                <Message ... />
            </Messages>
        </Country>
        <Country Code="...">....</Country>
    </Countries>

    <LinkFormats UseRewrites="false">
        <Link name="..." format="..." formatRewrite=".../"/>
        <link .... />
    </LinkFormats>

</WebsiteConfig>

我遇到的问题是 Country 元素 (ConfigurationElement) 中的 Files 和 Messages 集合抛出一个无法识别的元素“File”等。

我的国家/地区元素具有以下文件和消息属性

    [ConfigurationProperty("Files")]
    public FilesSection Files
    {
        get
        {
            return (FilesSection)this["Files"];
        }
        set
        {
            this["Files"] = (object)value;
        }
    }

    [ConfigurationProperty("Messages")]
    public MessagesSection Messages
    {
        get
        {
            return (MessagesSection)this["Messages"];
        }
        set
        {
            this["Messages"] = (object)value;
        }
    }

FilesSection 和 MessagesSection 都是从 ConfigurationElement 派生的,具有类型 x 的默认集合,这是从 ConfigurationElement 派生的项的集合。

有没有人知道我哪里出错了?

我是否需要将 Countries 和 Country 转为 SectionGroup's,然后将 Files 和 Messages 转为 Section's?

最佳答案

基于这篇文章http://www.endswithsaurus.com/2008/11/custom-configuration-section.html我发现我需要设置 ElementName,因为父级不是节处理程序的嵌套集合不会遵守“AddItemName”来设置子元素。

关于asp.net - 嵌套自定义配置元素集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4283753/

相关文章:

c# - ASP.NET DateTime 无法正确转换

c# - 防止整数值在 ASP.NET Web API 模型绑定(bind)中设置 bool 参数?

c# - 使用 iTextSharp 创建 Pdf 时将图像水印添加到 Pdf

python - 函数中的可变循环数(python)

java - 自定义配置文件 - Play !框架2.0

javascript - 如何在 asp.net 中使用外部 javascript 文件

php - 将 2 级回复转换为无限回复

javascript - 对象的多个总和有效地 d3.js

c# - 如何从 App.config 中读取这个自定义配置?

c# - 如何在 C# 中创建嵌套的自定义配置部分?