Chr*_*sic 7 c# web-config dynamic .net-4.0
随着.NET4的发布,有没有人创建过动态的web.config元素,只需让你在配置中键入任何你想要的东西,然后就可以从dynamic对象中访问它了?
创建自定义配置部分的工作量刚好超过顶部,看似没有理由.这让我想知道是否有人已经取代了歌曲和舞蹈,很容易创建5个以上的课程,每次都要推出新的配置部分.
(注意,当我说自由格式时,我显然希望它符合有效的xml元素)
如果您只想访问appSettings配置文件的部分,您可以继承该类DynamicObject并重写该TryGetMember方法:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,假设这是您的app.config文件:
<configuration>
<appSettings>
<add key="FavoriteNumber" value="3" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
...“FavoriteNumber”设置可以像这样访问:
class Program {
static void Main(string[] args) {
dynamic settings = new DynamicSettings(ConfigurationManager.AppSettings);
Console.WriteLine("The value of 'FavoriteNumber' is: " + settings.FavoriteNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,尝试访问未定义的键会导致RuntimeBinderException抛出异常。您可以通过将重写更改TryGetMember为始终返回来防止这种情况true,在这种情况下,未定义的属性将简单地返回null。