有些我做了相当多的是从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,这样我就不会以运行时错误告终,但我不知道该如何处理.如果这是可能的话。
从AppSettings部分获取和读取整数的最佳实践方法是什么?
还有一件事.
将其设置为readonly
不是一个好主意吗?
readonly int pageSize = Helpers.GetSettingInt("PAGE_SIZE")
似乎不起作用。
发布于 2010-09-16 12:05:14
我找到了我的问题的答案。它最初涉及额外的工作,但最终,它将减少错误。
它可以在斯科特·艾伦的博客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键,它就会中断,但我可以处理,因为这些值没有改变,性能比TryParse
更好,并且可以在一个位置修复。
解决办法很简单..。我不知道为什么我以前没想过。调用如下的值:
Config.PageSize
Config.HighlightedProductId
耶!
发布于 2017-04-07 09:27:52
看看T4Config。我将使用Lazyloading在适当的数据类型中加载值,生成应用程序设置和web/app配置的连接字符串部分的接口和具体实现。它使用一个简单的T4模板自动为您生成东西。
发布于 2022-04-24 06:14:46
我知道这个问题是很多年前提出的,但也许这个答案对某些人是有用的。目前,如果您已经在类构造函数中接收到IConfiguration
引用,最好的方法是使用GetValue<int>("appsettings-key-goes-here")
public class MyClass
{
private readonly IConfiguration _configuration;
public MyClass(IConfiguration configuration)
{
_configuration = configuration;
}
public void MyMethod()
{
int value = _configuration.GetValue<int>("appsettings-key-goes-here");
}
}
https://stackoverflow.com/questions/3687212
复制相似问题