Рассмотрим приведенный ниже код:
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 = Operator '+' несовместим с типами операндов "Vector2" и "Vector2" Источник = DynamicLINQ Позиция = 6
Как заставить анализатор "видеть" перегрузку оператора +
в типе Vector2
?
EDIT: Я также получаю ту же проблему с оператором =
.
Глядя на источник, я вижу, почему, он смотрит на специальный интерфейс, в котором перечислены множество методов, для простых типов и если он не может его найти, тогда возникает исключение. Проблема в том, что мой тип (Vector2
) отсутствует в этом списке, поэтому он никогда не найдет методы оператора.