是否可以在C#中创建一个通用的数字解析器?

前端之家收集整理的这篇文章主要介绍了是否可以在C#中创建一个通用的数字解析器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
要解析一个字符串到int,一个调用Int32.Parse(string),double,Double.Parse(string),long,Int64.Parse(string)等等.

是否可以创建一个使其通用的方法,例如ParseString(T)(string)?其中T可以是Int32,Double等.我注意到数字类型不实现任何公共接口,而Parse方法没有任何公共父.

有没有办法达到这个或类似的东西?

解决方法

您基本上必须使用反射来找到相关的静态Parse方法,调用它,并将返回值转回到T.或者,您可以使用 Convert.ChangeType获取相关的 TypeDescriptor和关联的 TypeConverter.

一种更有限但有效(在某些方面很简单)的方法是将字典从类型保存到解析委托 – 将委托转换为Func< string,T>并调用它.这将允许您针对不同类型使用不同的方法,但您需要了解您需要转换为最前面的类型.

无论你做什么,你将无法指定一个通用约束,这将使编译时安全.真的需要像static interfaces这样的想法.编辑:如上所述,有IConvertible接口,但这并不一定意味着你可以从字符串转换.另一种类型可以实现IConvertible,而无需从字符串转换到该类型.

猜你在找的C#相关文章