数値型の文字列をのように取得し、「123」のようなプリミティブな数値型に解析するメソッドを作成したい。コンパイル時に型が不明なので、Genericを使用することはできません。十分、公正文字列を目的のプリミティブ型に自動的にパースする方法(実行時に)
public object DynamicParse(string input, Type targetType)
{
if (targetType == typeof(int))
{
return int.Parse(input);
}
else
{
throw new InvalidOperationException("The string cannot be converted");
}
}
OK、しかし、私はまた、フロート、ダブル、ロング、小数を扱うようにしたい場合は...:
私の最初のアプローチでしたか?
条件文は次のようにかなり繰り返し取得します:
if (targetType == typeof(x))
{
x.Parse(input);
}
5倍!
重複を避けるためにこれを自動化するより良い方法はありますか?
あなたがこれをしたい正確に_why_明確ではありません。 'Type'参照を渡すことができれば、通常はその型の' Parse() 'メソッドを直接呼び出すことができます。いずれにせよ、マークされた複製には、この種の問題に対処する多数の回答があります。 –
なぜですか? =>私は、入力文字列をターゲットタイプに変換しようとするパーサにこの文字列を使用しています。可能な変換の1つは数値です。その場合、.NETビルトインパーサーを使用して文字列を変換します。 – SuperJMN
その質問で最も投票された答えはスマートで、うまくいきますが、私の場合は、コンパイル時に型がわかりません。提案されたソリューションは、構文解析にジェネリックスを使用します。申し訳ありませんが、私はそれが私が必要とするものではないと思います。 – SuperJMN