3

注: これはこのSO questionと非常によく似ていますが、さらに助けが必要です。

.config ファイルに次のセクションを作成しようとしていますが、このセクションにアクセスしようとすると例外が発生します。

.config ファイル

<configSections>
    <section name="foos" type="Ackbar.Mvc.Models.Foo.FooCollection, Ackbar.Mvc" requirePermission="false"/>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler" requirePermission="false" />
</configSections>

<foos>
    <add name="aaa" something="zzz"/>
    <add name="bbb" something="yyy"/>
    <add name="ccc" something="xxx"/>
</foos>

これは、2 つのクラスを作成する必要があることを意味します

クラス

public class FooCollection : ConfigurationElementCollection
{
    ... with my custom overrides, etc. ...
}

public class FooElement : ConfigurationElement
{
    [ConfigurationProperty("Name", IsRequired = true)]
    public string Name { .. }

    [ConfigurationProperty("Something ", IsRequired = true)]
    public string Something { .. }

    [ConfigurationProperty("IsDefault ", IsRequired = false, DefaultValue = false)]
    public bool IsDefault { .. }
}

ケウル。今、私が次のことをすると....

var whatever = ConfigurationManager.GetSection("foos")次の例外がスローされます:-

foos の構成セクション ハンドラーの作成中にエラーが発生しました: タイプ 'Ackbar.Mvc.Models.Foos.FooCollection' は 'System.Configuration.IConfigurationSectionHandler' から継承されません。

誰か助けてくれませんか?コレクションを親セクションの内側にラップしたくありません。

乾杯 :)

4

2 に答える 2

2

を実装する必要がありますIConfigurationSectionHandler。それを回避する方法はありません。

FooCollectionただし、そのインターフェイスも実装できる場合があります。

IsDefaultCollection属性プロパティも役立つ場合があります。

于 2010-02-24T08:28:41.037 に答える