Рассмотрим код ниже:
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 не было обработано пользовательским кодом Сообщение = Оператор '+' несовместимо с типами операндов 'Vector2' и 'Vector2' Источник = DynamicLINQ Position = 6
Как мне заставить синтаксический анализатор «видеть» перегрузку оператора +
в типе Vector2
?
РЕДАКТИРОВАТЬ: Я также получаю ту же проблему с =
оператор.
Глядя на источник, я могу понять, почему он смотрит на специальный интерфейс, в котором перечислено множество методов для простых типов, и если он не может его найти, он вызывает исключение. Проблема в том, что моего типа ( Vector2
) нет в этом списке, поэтому он никогда не найдет методы оператора.