C# Dynamically parse user input to string, int, double, decimal, datetime, bool, etc
本问题已经有最佳答案,请猛点这里访问。
如何将用户输入的值动态解析为特定类型?
如果我有一个文本框,用户可以在其中输入他们想要的任何内容,我如何动态分析该值并返回适当的类型?
1 2 3 4 | public dynamic ParseValue(dynamic value) { return //TO DO } |
如果用户输入以下值:
- 2015年6月18日10:23:00//返回日期时间
- 一些文本//返回字符串
- 10.23//返回double/decimal
- 真/真/假/假//返回bool not string
- 10//返回int
是否正确使用type.typarse,并检查每种类型是否有效?当然,我必须首先检查它是bool,然后是string,否则如果值是
您不需要使用
编写通用方法来解析
从这个答案
1 2 3 4 5 6 7 8 9 10 | public static T Convert<T>(this string input) { var converter = TypeDescriptor.GetConverter(typeof(T)); if(converter != null) { //Cast ConvertFromString(string text) : object to (T) return (T)converter.ConvertFromString(input); } return default(T); } |
是的,imho您需要使用type.typarse并为类型优先级构建自己的逻辑
类胰蛋白酶
1 2 3 4 | public dynamic ParseValue(string value) { return //TO DO } |
虽然我不明白您为什么需要这样做,但以下可能有效:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // since user will enter text value should be string public dynamic ParseValue(string value) { DateTime tempDateTime; if (DateTime.TryParse(value, out tempDateTime)) { return tempDateTime; } int tempInt; if(int.TryParse(value, out tempInt)) { return tempInt; } // also process other types like double etc. before falling back to string return value; } } |
但我怀疑这将是一个解决方案,因为您需要获得处理调用函数中返回值的确切类型。