Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ConfigurationSection multiple enum values

Is there a way to set multiple enum values in a configuration section?

Like you do in .net object.Filter = Filter.Update | Filter.Create;

<wacther filter="update, created"/>

Is something like that supported?

like image 336
mimo Avatar asked Dec 08 '22 19:12

mimo


2 Answers

It just works out of the box:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var section = (MySection)ConfigurationManager.GetSection("mySection");
            Console.WriteLine(section.Enum);
        }
    }

    public class MySection : ConfigurationSection
    {
        [ConfigurationProperty("enum")]
        public MyEnum Enum
        {
            get { return (MyEnum)this["enum"]; }
            set { this["enum"] = value; }
        }
    }

    [Flags]
    public enum MyEnum
    {
        None = 0,
        Foo = 1,
        Bar = 2,
        Baz = 4
    }
}


<configSections>
  <section name="mySection" type="ConsoleApplication1.MySection, ConsoleApplication1"/>
</configSections>

<mySection enum="Foo, Bar"/>

Prints: Foo, Bar

like image 152
fsimonazzi Avatar answered Dec 11 '22 10:12

fsimonazzi


Define a flag enum:

[Flags]
enum Filter
{
    None = 0,
    Update = 1,
    Create = 2
}

Assume you have a string of enum from your config file:

var enumString = "update, create";

So you can get the result:

var result = (Filter) Enum.Parse(typeof (Filter), enumString, true);
like image 39
cuongle Avatar answered Dec 11 '22 08:12

cuongle