如何通过代码一般分析数据?

时间:2010-12-17 19:53:10

标签: c# .net xml generics

我有一个XML文件,其中包含要检查和验证的项目的“脚本”。它的作用是读取要检查的值,如果该检查为真,它会执行某些操作。我最初写这个只是用整数来工作,但我意识到我需要让它适用于更多的数据类型。

样本检查是这样的......它会看到SomeValue是否大于20。

<If field="SomeValue" test="@gt" value="20" />

*该字段只是一些字符串值。所以对于双倍,该字段将类似于55.7。

我所做的就是对值进行int.TryParse,看看我是否可以将字符串(SomeValue)转换为整数。如果可以的话,我会检查它是否大于20.如果不是,我只是在检查时假设是假的。

有没有人对我如何使用任何数据类型有任何建议? (即string,double,DateTime) Generics会工作吗?我从来没有使用它们所以我不知道它们是否是最好的解决方案。感谢。

1 个答案:

答案 0 :(得分:1)

当您不知道类型时,棘手的一点是解析,但这可以通过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),但它很丑陋而且有点慢。

老实说,但是:如果是我,我会假设这里需要处理少量类型,特殊情况。