views:

63

answers:

1

Hi folks,

NOTE: this is very very similar to this SO question, but I need some more help.

i'm trying to make the following section in my .config file, but i get an exception when trying to access this section.

.config file

<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>

Ok, so this means i need to make two classes

classes

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

and

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 { .. }
}

Kewl. Now, when i do the following ....

var whatever = ConfigurationManager.GetSection("foos") is throws the following exception :-

An error occurred creating the configuration section handler for foos: Type 'Ackbar.Mvc.Models.Foos.FooCollection' does not inherit from 'System.Configuration.IConfigurationSectionHandler'.

Can someone please help me? I don't want to wrap the collection INSIDE a parent section.

Cheers :)

A: 

You must implement an IConfigurationSectionHandler. No way around that.

However, you may be able to let your FooCollection implement that interface as well.

The IsDefaultCollection attribute property may also come in handy.

Mark Seemann
Got it :) _finally- took me ages. i'll post some code in my opening post to help others. Cheers mate!
Pure.Krome