considerar el código de abajo:LINQ y del operador sobrecargas dinámicas
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");
Correr, consigo la excepción a continuación:
System.Linq.Dynamic.ParseException era controlada por el código de usuario Mensaje = operador '+' incompatible con los tipos de operando 'Vector2' y 'Vector2' Fuente = DynamicLINQ Posición = 6
¿Cómo obtengo el analizador para 'ver' la sobrecarga del operador +
en el tipo Vector2
?
EDITAR: También tengo el mismo problema con el operador =
.
Al mirar la fuente puedo ver por qué, se ve una interfaz especial que enumera una gran cantidad de métodos, para tipos simples y si no puede encontrarla, entonces se genera la excepción. El problema es que mi tipo (Vector2
) no está en esa lista, por lo que nunca encontrará los métodos del operador.
George, he revertido mi posición sobre si deberías simplemente crear _any_ interface o extender desde una de las interfaces dadas. Creo que sería más seguro extender desde una de las interfaces en su lugar. Puede haber o no verificación adicional de tipo (tal como el tipo en realidad admite la adición) en el futuro o lo que sea. –
Buen punto, gracias; He alterado mi código en consecuencia. –