我怎样才能使用动态settings.Blah而不是AppSettings ["blah"]?

Bra*_*don 11 c# dynamic c#-4.0

我得到了如何dynamic在C#4.0中使用,但是,我不确定如何采取一些东西并使其具有动态性(我的技术术语).

例如,ConfigurationManager.AppSettings["blah"]我怎样才能创建一个包装类型,让我像动态一样使用它settings.Blah

Rex*_*x M 9

你还需要一个切入点.然而,从那里可能性非常灵活.这是一个示例想法,用于演示动态调度的强大功能:

public abstract class MyBaseClass
{
    public dynamic Settings
    {
        get { return _settings; }
    }

    private SettingsProxy _settings = new SettingsProxy();

    private class SettingsProxy : DynamicObject
    {
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            var setting = ConfigurationManager.AppSettings[binder.Name];
            if(setting != null)
            {
                result = setting.ToString();
                return true;
            }
            result = null;
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)