È possibile creare classi di espressioni personalizzate? Se è così, qualcuno ha qualche esempio? Ereditare dal framework abstract La classe Expression pone un problema in quanto il suo costruttore prende un parametro ExpressionType, che è un tipo enum di framework - ovviamente non posso personalizzarlo!
Qualche idea?
Questo è esattamente ciò che il codice DLR su codeplex doveva fare; alla fine, hanno ricreato l'intera base di codice in uno spazio dei nomi diverso (IIRC), fino alla spedizione di 4.0.
Questo non necessariamente funziona bene con il compilatore C #; Sinceramente non ci ho provato
Con .net 3.5 non è possibile farlo perché il costruttore Expression accetta un valore enum ExpressionType e non è possibile aggiungere nuovi tipi di nodo all'enumerazione.
Non puoi sovraccaricare neanche un tipo di nodo esistente, perché non puoi ereditare da nessuna delle "classi foglia" (come BinaryExpression) perché sono tutte sigillate.
Secondo i documenti MSDN sembra che si possa fare ciò in CLR v4, a patto che si sostituisca il metodo "Riduci" e si usi un tipo di nodo ExpressionType.Extension.