consideri il codice qui sotto:dinamici LINQ e operatore sovraccarichi
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");
corsa, ottengo l'eccezione di seguito:
System.Linq.Dynamic.ParseException è stata gestita dal codice utente Messaggio = operatore '+' incompatibile con i tipi di operando 'Vector2' e 'Vettore2' Source = DynamicLINQ Posizione = 6
Come si ottiene il parser per "vedere" il sovraccarico dell'operatore +
sul tipo Vector2
?
MODIFICA: Ho anche lo stesso problema con l'operatore =
.
Guardando al codice sorgente posso capire perché, guarda un'interfaccia speciale che elenca un sacco di metodi, per tipi semplici e se non riesce a trovarlo, solleva l'eccezione. Il problema è che il mio tipo (Vector2
) non è presente nell'elenco, quindi non troverà mai i metodi dell'operatore.
George, ho ripristinato la mia posizione sull'opportunità o meno di creare un'interfaccia _any_ o estendere da una delle interfacce specificate. Penso che sarebbe più sicuro estendere da una delle interfacce. Potrebbero esserci o meno verifiche di tipo aggiuntive (come il tipo che in realtà supporterà l'aggiunta) in futuro o quant'altro. –
Buon punto, grazie; Ho modificato il mio codice di conseguenza. –