我有一个 XML 文件,其中包含要检查和验证的项目“脚本”。它所做的是读入要检查的值,如果该检查为真,它就会执行某些操作。我最初写这个只是为了处理整数,但我意识到我需要让它处理更多的数据类型。
一个示例检查是这样的...它查看 SomeValue 是否大于 20。
<If field="SomeValue" test="@gt" value="20" />
*该字段只是一些字符串值。所以对于 double 来说, field 大约是 55.7。
我所做的就是对值执行 int.TryParse 以查看是否可以将字符串 (SomeValue) 转换为整数。如果可以,我会检查它是否大于 20。如果不是,我就假设检查结果为 false。
有人对我如何处理任何数据类型有任何建议吗? (即字符串、 double 、日期时间) 泛型会起作用吗?我从未使用过它们,所以我不知道它们是否是最佳解决方案。谢谢。
最佳答案
棘手的一点是当你不知道类型时的解析,但这可以用 TypeDescriptor.GetConverter
来完成。 :
object knownVal = 21; //perhaps obtained from reflection
Type type = typeof(int);
string text = "20";
object val = TypeDescriptor.GetConverter(type)
.ConvertFromInvariantString(text);
int rel = Comparer.Default.Compare(knownVal, val);
泛型是一个选项(尤其是对于 Comparer<T>.Default.Compare
),但泛型与 Type
不能很好地融合。只有在运行时才知道的值。可以做到 ( MakeGenericType
/MakeGenericMethod
),但它很丑而且有点慢。
但老实说:如果是我,我会假设这里有少量类型需要处理,并对它们进行特殊处理。
关于c# - 如何通过代码泛化分析数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474261/