我存儲在字符串兩種類型,我需要得到所產生的加/師型/ ...他們兩個:C#獲取運營商造成型
"test" + 2 // would give "string"
2 - 2.2f // would give "float"
等等...
如果其中一個不是原始字符串或字符串(如System.DateTime),我已經可以做到了,但是我找不到如何做(乾淨)... 我已經得到最好的鏡頭現在是在運行時建立這兩種方法並調用「GetResultType」方法:
Type GetTemplateType<T>(T? t) where T: struct => typeof(T);
Type GetResultType() => GetTemplateType(true ? null : ((int?)null) + ((double?)null));
上述代碼中的「int」和「double」將在生成的代碼中進行硬編碼,因此它將基本上依靠編譯器來解析類型。
我覺得這個方法有點難看,所以我想知道是否會有更乾淨的方法來做到這一點?
編輯:
我沒有變量的值。我構建了一個可視化編程接口,因此我需要知道在不知道這些變量值的情況下添加兩個變量的結果類型。我基本上是需要這樣的方法:
string GetResultingTypeOfAddition(string type1, string type2) { ... }
...
var type = GetResultingTypeOfAddition(node1.Type, node2.Type);
偏離航向所有"string"
變量也可以是"System.Type"
變量...
我可能已經硬編碼的一切準備,但我一直在尋找一個現有的辦法使用反射(或其他)來得到最終的類型!
哎你能在問候你'字符串+ int'和'INT給代碼一個更好的例子 - 浮動'謝謝 – MethodMan
你可以在實際代碼中顯示如何爲變量賦值並且它的類型爲「test」+ 2 //會給「字符串」,顯示實際代碼不是字符串+ int值.. – MethodMan
如果你是誰決定結果類型應該是什麼,你可以在字典中硬編碼它,使用鍵類型和返回類型作爲值' – Dido