Free form Dynamic web.config region

With the release of .NET4 has anyone ever created a dynamic web.config element that will just let you type anything you want into the config and then you can access it all off a dynamic object?

The amount of work that goes into creating custom config sections is just over the top for seemingly no reason. This has lead me to wonder if someone has replaced the song and dance of easily needing to create 5+ classes to roll a new config section each and every time.

(Note, when I say free form I would obviously expect it to conform to a valid xml element)


If you just want to access the appSettings section of the configuration file, you can inherit from the DynamicObject class and override the TryGetMember method:

public class DynamicSettings : DynamicObject {
    public DynamicSettings(NameValueCollection settings) {
        items = settings;
    }

    private readonly NameValueCollection items;

    public override bool TryGetMember(GetMemberBinder binder, out object result) {
        result = items.Get(binder.Name);
        return result != null;
    }
}

Then, assuming this is your app.config file:

<configuration>
  <appSettings>
    <add key="FavoriteNumber" value="3" />
  </appSettings>
</configuration>

... the 'FavoriteNumber' setting could be accessed like so:

class Program {
    static void Main(string[] args) {
        dynamic settings = new DynamicSettings(ConfigurationManager.AppSettings);
        Console.WriteLine("The value of 'FavoriteNumber' is: " + settings.FavoriteNumber);
    }
}

Note that attempting to access a key that is undefined results in a RuntimeBinderException being thrown. You could prevent this by changing the overridden TryGetMember to always return true , in which case undefined properties will simply return null .

链接地址: http://www.djcxy.com/p/7366.html

上一篇: ScaleAnimation上的pivotX和PivotY不起作用

下一篇: 自由格式动态web.config区域