是否可以创建一个使其通用的方法,例如ParseString(T)(string)?其中T可以是Int32,Double等.我注意到数字类型不实现任何公共接口,而Parse方法没有任何公共父.
有没有办法达到这个或类似的东西?
解决方法 您基本上必须使用反射来找到相关的静态Parse方法,调用它,并将返回值转回到T.或者,您可以使用Convert.ChangeType
或获取相关的 TypeDescriptor
和关联的 TypeConverter
. 一种更有限但有效(在某些方面很简单)的方法是将字典从类型保存到解析委托 – 将委托转换为Func< string,T>并调用它.这将允许您针对不同类型使用不同的方法,但您需要了解您需要转换为最前面的类型.
无论你做什么,你将无法指定一个通用约束,这将使编译时安全.真的需要像static interfaces这样的想法.编辑:如上所述,有IConvertible
接口,但这并不一定意味着你可以从字符串转换.另一种类型可以实现IConvertible,而无需从字符串转换到该类型.
以上是内存溢出为你收集整理的是否可以在C#中创建一个通用的数字解析器?全部内容,希望文章能够帮你解决是否可以在C#中创建一个通用的数字解析器?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)