【发布时间】:2012-04-06 04:09:46
【问题描述】:
有没有办法使这个方法通用,以便我可以返回一个字符串、布尔值、整数或双精度值?现在,它返回的是一个字符串,但如果它能够找到“true”或“false”作为配置值,我想返回一个 bool 例如。
public static string ConfigSetting(string settingName)
{
return ConfigurationManager.AppSettings[settingName];
}
【问题讨论】:
-
有没有办法让你知道每个设置是什么类型?
-
我认为您真正想问的问题是“如何使我的应用程序配置成为强类型?”不过,我已经很久没有写出正确的答案了。
-
是的,理想情况下我不想将类型传递给方法。我只会有我提到的4种类型。所以如果设置了“true”/“false”,我希望这个函数返回一个布尔值(不需要将它传递给方法),我可能可以将 int 和 double 组合成 double,其他一切都应该是一个字符串。已经回答的内容可以正常工作,但我每次都需要传递类型,这可能很好。
-
您的评论听起来像是您在要求一个方法,该方法将返回一个强类型的 bool(或字符串,或 int,或者你有什么)在运行时基于为设置名称键检索的实际数据。 C# 不会为你这样做;您无法在编译时知道该值的类型。换句话说,这是动态类型,而不是静态类型。如果您使用
dynamic关键字,C# 可以为您做到这一点。这会带来性能成本,但对于读取配置文件,性能成本几乎可以肯定是微不足道的。
标签: c# .net generics return-type