是否可以在C#中创建一个通用的数字解析器?
发布时间:2020-12-15 04:30:07 所属栏目:百科 来源:网络整理
导读:要解析一个字符串到int,一个调用Int32.Parse(string),double,Double.Parse(string),long,Int64.Parse(string)等等. 是否可以创建一个使其通用的方法,例如ParseString(T)(string)?其中T可以是Int32,Double等.我注意到数字类型不实现任何公共接口,而Parse方法
要解析一个字符串到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这样的想法.编辑:如上所述,有 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |