ASP.net为什么应用程序设置仅为字符串?

ASP.net为什么应用程序设置仅为字符串?,asp.net,web-config,application-settings,Asp.net,Web Config,Application Settings,为什么我必须将所有内容都设置为字符串?为什么我不能使用不同的数据类型(如int)来帮助我停止强制转换所有内容?这就是为什么我更喜欢自定义配置部分,而不是将键/值对放在appSettings中。有关如何进行自己的配置的更多信息,请参阅。一旦有了自己的configuration section类,您就应该能够访问任何数据类型的设置。我只是使用泛型来处理类似的事情 <appSettings> <!-- Settings file for website! --

为什么我必须将所有内容都设置为字符串?为什么我不能使用不同的数据类型(如int)来帮助我停止强制转换所有内容?

这就是为什么我更喜欢自定义配置部分,而不是将键/值对放在appSettings中。有关如何进行自己的配置的更多信息,请参阅。一旦有了自己的configuration section类,您就应该能够访问任何数据类型的设置。

我只是使用泛型来处理类似的事情

    <appSettings>
        <!-- Settings file for website! -->
        <add key="DefaultCookieExpiryMins" value="30" />
    </appSettings>
public static T GetConfigurationValue(字符串keyName)
{
if(System.Configuration.ConfigurationManager.AppSettings[keyName]!=null)
{
T结果;
尝试
{
结果=(T)Convert.ChangeType(System.Configuration.ConfigurationManager.AppSettings[keyName],typeof(T));
}
抓住
{
返回默认值(T);
}
返回结果;
}
抛出新ArgumentException(“当前配置中不存在名为“+keyName+”的键。”,keyName);
}

用法:
GetConfigurationValue(“DefaultCookieExpiryMins”)

编写一个包装器类,因此您只需要强制转换onceText文件中只包含字符串。你想要什么不同?要么您将在代码中将其转换为
int
,要么我猜您会在web.config中添加类似
type=“int”
的内容?但是,由于没有任何东西可以阻止您在文本文件中键入任何您想要的内容,即使您可以向设置中添加数据类型,这似乎是毫无意义的。你仍然可以有坏数据。如果在从配置文件获取数据时不验证数据,它仍然会在某个地方中断。
public static T GetConfigurationValue<T>(string keyName)
        {
            if (System.Configuration.ConfigurationManager.AppSettings[keyName] != null)
            {
                T result;
                try
                {
                    result = (T)Convert.ChangeType(System.Configuration.ConfigurationManager.AppSettings[keyName], typeof(T));
                }
                catch
                {
                    return default(T);
                }

                return result;
            }

            throw new ArgumentException("A key with the name " + keyName + " does not exist in the current configuration.", keyName);
        }