Jon*_*eet 13
您基本上必须使用反射来查找相关的静态Parse方法,调用它并将返回值强制转换回来T.或者,您可以使用Convert.ChangeType或获取相关TypeDescriptor和相关的TypeConverter.
更有限但有效(并且在某些方面更简单)的方法是将字典从类型保存到解析委托 - 将委托转换为a Func<string, T>并调用它.这将允许您为不同类型使用不同的方法,但您需要知道转换为预先所需的类型.
无论你做什么,你都无法指定一个通用约束,它会在编译时使其安全.真的,你需要像我这样的静态接口的想法.编辑:如上所述,有IConvertible界面,但这并不一定意味着你将能够转换string.另一种类型可以实现,IConvertible而无需从字符串转换为该类型.
实际上,标准数字类型确实实现了一个公共接口:IConvertible。这是Convert.ChangeType使用的那个。
不幸的是,没有TryParse等效项,如果无法解析字符串,它将抛出异常。
顺带一提,BCL团队似乎完全忘记了整个“转换”区域。自.NET Framework 1以来,这里没有任何新内容(TryParse方法除外)。
| 归档时间: | 
 | 
| 查看次数: | 1395 次 | 
| 最近记录: |