3

現在関与している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)内のFilesandMessagesコレクションが認識されない要素「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から派生しています。

誰かが私がどこで間違っているのかについての洞察を持っていますか?

国と国をSectionGroupに変換してから、ファイルとメッセージをSectionに変換する必要がありますか?

4

2 に答える 2

4

この記事http://www.endswithsaurus.com/2008/11/custom-configuration-section.htmlに基づいて、親がセクションハンドラーではないネストされたコレクションが従わないため、 ElementName を設定する必要があることを発見しました子要素を設定するための「AddItemName」。

于 2010-11-26T14:08:05.617 に答える
0

提供した記事のように Element Name の内部メンバー変数を設定する代わりに、ElementName プロパティをカスタム名でオーバーライドできます。

public class MySettings : ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement()
    {
        return new MySetting();
    }
    protected override object GetElementKey(ConfigurationElement element)
    {
        return ((MySetting)element).Name;
    }

    protected override string ElementName
    {
        get { return “MySetting”; }
    }

    ...

詳細については、こちらの記事を参照してください。

于 2011-05-03T13:38:49.047 に答える