2017-05-24 114 views
2

编辑更改设置的数据类型Settings.settings

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

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

+0

到目前为止您无法重现您的问题,您可以发布属性设置蒙版的屏幕截图吗?与有问题的变量? –

+0

你是否像这样使用设置:** Properties.Settings.Default.FuelTankCapacity **? –

+0

你是否通过项目属性窗口修改了设置文件,而不是直接进入app.config.That似乎总是有效。然后通过“属性”命名空间访问它。 – Wheels73

回答

1

我想问题是,AppSettingsNameValueCollection类型的其根据MSDN

可以或者与键或与索引来访问相关联的字符串的键和字符串值的集合。

所以采取这条路线,你最终不可避免地与一个字符串。

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

int t = Properties.Settings.Default.FuelTankCapacity; 

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

您可以访问应用程序范围设置的值为只读,您可以读写用户范围设置的值。 C#中的属性命名空间提供了设置。

+0

非常感谢!我要接受这个答案不仅是因为它解决了我遇到的转换问题,而且它也给了我正确的价值,而我的上面的代码却没有。 – Ortund

+0

@Ortund非常受欢迎。很高兴我能帮上忙。在你的问题之前,我不知道变量也可以通过'ConfigurationManager'访问。很高兴知道这一点。 –