更改 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 并不能解决问题。

我想问题是 AppSettingsNameValueCollection 类型,根据 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.