私は、チェックして検証するアイテムの「スクリプト」を含むXMLファイルを持っています。それはチェックする値を読み込み、そのチェックが真であれば何かを行います。私はもともと整数だけで動作するように書いていましたが、より多くのデータ型で動作させる必要があることを認識しています。コードを使ってデータを一般的に分析する方法は?
サンプルのチェックは、このようなものですsomeValueのは20
<If field="SomeValue" test="@gt" value="20" />
よりも大きければ...それは、フィールドはいくつかの文字列値です*見ています。だから、倍の場合、フィールドは55.7のようなものになります。
私が行うのはint型です。文字列(SomeValue)を整数にキャストできるかどうかを調べる値です。私ができるならば、私はそれが20より大きいかどうかをチェックする。そうでなければ、私はちょうどチェックで偽と思う。
どのようなデータ型でこれを行うことができますか? (つまり、文字列、倍精度、DateTime) Genericsは機能しますか?私はそれらを使用したことがないので、彼らが最良の解決策になるかどうかはわかりません。ありがとう。 「
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
付き)オプションですが、ジェネリックはdoesnの:
でもint型を使用しています。私は型を指定せずに(より大きい、より小さい、等しい)値を比較する方法をもっと探していました。それが可能なのかどうかはわかりません。 – Travyguy9
@ Travyguy9私はおそらくXMLから、ある時点で型を知っていると仮定していますか?そうでなければあいまいな質問です。どちらが大きいですか? '10'か' 2'ですか? (それがintか文字列かによって異なります) –
申し訳ありませんが、あなたはそうです、私はおそらく、この型としてチェックする属性が必要になることに同意します。私はこれらの異なるタイプのエバリュエーターメソッドをすべて書くのをやめようとしています。 – Travyguy9