考虑以下代码:
var vectorTest = new Vector2(1, 2) + new Vector2(3, 4); // Works
var x = Expression.Parameter(typeof(Vector2), "x");
var test = System.Linq.Dynamic
.DynamicExpression.ParseLambda(new[] { x }, null, "x = x + x");
运行代码时,我遇到了以下异常:
System.Linq.Dynamic.ParseException 在用户代码中未被处理 Message=运算符“+”与类型“Vector2”和“Vector2”不兼容 Source=DynamicLINQ Position=6
如何让解析器“看到”Vector2
类型上的+
运算符重载呢?
编辑:我还遇到了=
运算符相同的问题。
通过查看源代码,我发现它会查找一个特殊接口来列出简单类型的许多方法,如果找不到,就会引发异常。问题是,我的类型(Vector2
)不在那个列表中,所以它永远不会找到运算符方法。