我想对Expression.Add
两种数据类型求和,这可能是 a double
和 an int
(或任何其他不匹配的对),如下所示:
var pLeft = Expression.Parameter(typeof(int), "left");
var pRight = Expression.Parameter(typeof(double), "right");
var addition = Expression.Add(pLeft, pRight);
var lambda = Expression.Lambda<Func<int, double, double>>(addition, pLeft, pRight).Compile();
var res = method(1, 0.5);
然而,我很快被告知:
The binary operator Add is not defined for the types 'System.Int32' and 'System.Double'.
很明显,+
并不是为每对可能的数字都定义了运算符,但是当我编写类似var x = 1 + 0.5
. 有没有一种方法可以使用表达式来模拟这种转换,或者有没有一种方法可以使用表达式来对这些类型求和?