Динамические перегрузки linq и операторов

Рассмотрим код ниже:

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 ) нет в этом списке, поэтому он никогда не найдет методы оператора.

10
задан George Duckett 12 January 2012 в 16:49
поделиться