我存储在字符串两种类型,我需要得到所产生的加/师型/ ...他们两个: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