我做的很多是从AppSettings读取整数。最好的方法是什么?
而不是每次都这样做:
int page_size;
if (int.TryParse( ConfigurationManager.AppSettings["PAGE_SIZE"], out page_size){
}
我正在考虑我的Helpers
类中的一个方法:
int GetSettingInt(string key) {
int i;
return int.TryParse(ConfigurationManager.AppSettings[key], out i) ? i : -1;
}
但这只是为了节省一些按键。
理想情况下,我喜欢将它们全部放入我可以使用intellisense的某种结构中,所以我最终不会遇到运行时错误,但我不知道我是如何处理它的。 ..或者如果这是可能的话。
从Web.Config的AppSettings部分获取和读取整数的最佳实践方法是什么?
还有一件事......
将此设置为readonly
不是一个好主意吗?
readonly int pageSize = Helpers.GetSettingInt("PAGE_SIZE")
似乎不起作用。
答案 0 :(得分:17)
我找到了问题的答案。它首先涉及额外的工作,但最终会减少错误。
可以在Scott Allen's blog OdeToCode找到,这是我的实现:
创建一个名为Config
public static class Config {
public static int PageSize {
get { return int.Parse(ConfigurationManager.AppSettings["PAGE_SIZE"]); }
}
public static int HighlightedProductId {
get {
return int.Parse(ConfigurationManager.AppSettings["HIGHLIGHT_PID"]);
}
}
}
这样做的好处有三方面:
如果有人更改AppSetting Key,它会中断,但我可以处理,因为这些值没有改变,性能优于TryParse
,可以在一个位置修复。
解决方案很简单......我不知道为什么我之前没想到它。像这样调用值:
Config.PageSize
Config.HighlightedProductId
耶!
答案 1 :(得分:0)
看看T4Config。我将使用适当数据类型中的值的Lazyloading生成web / app配置的appsettings和connectionstringsections的接口和具体实现。它使用简单的T4模板为您自动生成内容。
答案 2 :(得分:-1)
为避免创建自行车课程,您可以使用;
System.Configuration.Abstractions method .AppSettings.AppSetting<int>("intKey");https://github.com/davidwhitney/System.Configuration.Abstractions