【问题标题】:Changing the data type of a setting in Settings.settings在 Settings.settings 中更改设置的数据类型
【发布时间】:2017-10-24 09:33:49
【问题描述】:

编辑

我已经改变了对设置的使用

private int _Capacity = ConfigurationManager.AppSettings["FuelTankCapacity"];

到...

private int _Capacity = Convert.ToInt32(ConfigurationManager.AppSettings["FuelTankCapacity"]);

这解决了问题,但感觉像是一个懒惰的修复。必须有一种方法可以为设置指定整数类型,不是吗?

原始问题

在我的 winforms 应用程序中创建了一些设置后,我在其中一个设置中遇到了一些问题。

该设置用于指定油箱的最大容量,值为2000(2000 升)。

不幸的是,该设置被读取为字符串值而不是 int,即使我指定它应该是整数值。

这是此设置的App.config 代码:

<setting name="FuelTankCapacity" serializeAs="String">
    <value>2000</value>
</setting>

请注意,将 SerializeAs 值更改为 int/Int32 并不能解决问题。

【问题讨论】:

  • 目前无法重现您的问题,您可以发布属性设置掩码的屏幕截图吗?有问题的变量?
  • 你是否使用这样的设置:Properties.Settings.Default.FuelTankCapacity ?
  • 您是否真的通过项目属性窗口添加设置文件,而不是直接进入 app.config。这似乎总是有效的。然后,您可以通过“属性”命名空间访问它。
  • @Wheels73 我就是这样做的。

标签: c# winforms configurationmanager


【解决方案1】:

我猜问题是AppSettingsNameValueCollection 类型,它是根据MSDN 来定义的

可以通过键或索引访问的相关字符串键和字符串值的集合。

所以走这条路,你最终不可避免地会得到一个字符串。

使用Property 命名空间,您可以通过Settings 直接访问变量,从而访问您指定的类型:

int t = Properties.Settings.Default.FuelTankCapacity;

这里有更多关于using settings at runtime的信息

您可以只读方式访问应用程序范围的设置值,并且可以读取和写入用户范围设置的值。在 C# 中可以通过 Properties 命名空间进行设置。

【讨论】:

  • 非常感谢!我会接受这个答案,不仅因为它解决了我遇到的转换问题,而且它还给了我正确的值,而我上面的代码没有。
  • @Ortund 非常欢迎您。很高兴我能帮助你。在您提出问题之前,我不知道变量也可以通过ConfigurationManager 访问。也很高兴知道这种方式。
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多