更改 Settings.settings 中设置的数据类型
Changing the data type of a setting in 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 并不能解决问题。
我想问题是 AppSettings
是 NameValueCollection
类型,根据 MSDN
a collection of associated String keys and String values that can be accessed either with the key or with the index.
所以走这条路你最终不可避免地会得到一个字符串。
使用 Property
命名空间,您可以通过 Settings
直接访问变量,从而访问您指定的类型:
int t = Properties.Settings.Default.FuelTankCapacity;
这里有更多关于 using settings at runtime
的信息
You can access the value of settings with application scope on a read-only basis, and you can read and write the values of user-scope settings. Settings are available in C# through the Properties namespace.
编辑
我已经从
更改了我对设置的使用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 并不能解决问题。
我想问题是 AppSettings
是 NameValueCollection
类型,根据 MSDN
a collection of associated String keys and String values that can be accessed either with the key or with the index.
所以走这条路你最终不可避免地会得到一个字符串。
使用 Property
命名空间,您可以通过 Settings
直接访问变量,从而访问您指定的类型:
int t = Properties.Settings.Default.FuelTankCapacity;
这里有更多关于 using settings at runtime
的信息You can access the value of settings with application scope on a read-only basis, and you can read and write the values of user-scope settings. Settings are available in C# through the Properties namespace.