首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >一遍又一遍地从AppSettings读取整数

一遍又一遍地从AppSettings读取整数
EN

Stack Overflow用户
提问于 2010-09-10 10:20:01
回答 4查看 29.8K关注 0票数 20

有些我做了相当多的是从AppSettings读取整数。做这件事最好的方法是什么?

而不是每次都这么做:

代码语言:javascript
运行
AI代码解释
复制
int page_size; 
if (int.TryParse( ConfigurationManager.AppSettings["PAGE_SIZE"], out page_size){

}

在我的Helpers类中,我正在考虑这样一种方法:

代码语言:javascript
运行
AI代码解释
复制
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")似乎不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-16 12:05:14

我找到了我的问题的答案。它最初涉及额外的工作,但最终,它将减少错误。

它可以在斯科特·艾伦的博客OdeToCode上找到,下面是我的实现:

创建一个名为Config的静态类

代码语言:javascript
运行
AI代码解释
复制
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"]); 
     }
   }
}

这样做的好处有三方面:

  • 智能感知
  • 一个断点(干)
  • 因为我只编写了一次Config字符串,所以我做了一个常规的int.Parse。

如果有人更改了AppSetting键,它就会中断,但我可以处理,因为这些值没有改变,性能比TryParse更好,并且可以在一个位置修复。

解决办法很简单..。我不知道为什么我以前没想过。调用如下的值:

代码语言:javascript
运行
AI代码解释
复制
Config.PageSize

Config.HighlightedProductId

耶!

票数 24
EN

Stack Overflow用户

发布于 2017-04-07 09:27:52

看看T4Config。我将使用Lazyloading在适当的数据类型中加载值,生成应用程序设置和web/app配置的连接字符串部分的接口和具体实现。它使用一个简单的T4模板自动为您生成东西。

票数 0
EN

Stack Overflow用户

发布于 2022-04-24 06:14:46

我知道这个问题是很多年前提出的,但也许这个答案对某些人是有用的。目前,如果您已经在类构造函数中接收到IConfiguration引用,最好的方法是使用GetValue<int>("appsettings-key-goes-here")

代码语言:javascript
运行
AI代码解释
复制
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");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3687212

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文