私は、文字列に格納された2つの種類があると私はほか/部門/ ...両者の結果の型を取得する必要がある結果取得:C#の演算子はタイプ
"test" + 2 // would give "string"
2 - 2.2f // would give "float"
などを...
を それらのうちの1つがプリミティブでも文字列でもない場合(System.DateTimeのように)、私はそれを行う方法を見つけることができません。(クリーン) ベストショット実行時にこれらの2つのメソッドを作成し、 "GetResultType"メソッドを呼び出すことです:
Type GetTemplateType<T>(T? t) where T: struct => typeof(T);
Type GetResultType() => GetTemplateType(true ? null : ((int?)null) + ((double?)null));
上記のコードの "int"と "double"は生成されたコードにハードコードされているため、本質的にコンパイラに依存して型を解決します。
私はこの方法を少し醜いので、それを行うよりクリーンな方法があるのだろうかと思いましたか?
編集:
私は変数の値を持っていません。私はビジュアルプログラミングインターフェイスを構築しているので、これらの変数の値を知らずに2つの変数を追加する結果の型を知る必要があります。もちろん、すべての"string"
変数はまた、私はハードすべての可能性をコード化されていたかもしれないが、私は、既存の方法に探していた
"System.Type"
変数...することができ、オフ
string GetResultingTypeOfAddition(string type1, string type2) { ... }
...
var type = GetResultingTypeOfAddition(node1.Type, node2.Type);
:私はこのような方法を必要とする本質的でしょう結果の型を取得するためにリフレクション(または何でも)を使用してください!
ねえ、あなたの 'の文字列+ int'と' int型に関してのコードでは、より良い例を与えることができます - フロート'thanks – MethodMan
実際のコードで変数に値を割り当てる方法と、' 'test" + 2 // "string"とし、実際のコードではなく文字列+ int値を表示することができますか? – MethodMan
結果の型を決定する人は、キーで型を使用し、型で値を返すように辞書でハードコーディングすることができます – Dido