在Settings.settings

时间:2017-05-24 07:22:03

标签: c# winforms configurationmanager

编辑

我已经改变了对

设置的使用
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 并不能解决问题。 Here's the Settings.settings screen

1 个答案:

答案 0 :(得分:1)

我想问题是AppSettings属于NameValueCollection类型,符合MSDN

  

可以使用键或索引访问的关联String键和String值的集合。

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

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

int t = Properties.Settings.Default.FuelTankCapacity;

以下是有关using settings at runtime

的更多信息
  

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