Qual è la migliore risorsa per l'apprendimento approfondito degli alberi di espressione C #?

c# c#-3.0 expression-trees lambda

Domanda

Quando ho digitato per la prima volta questa domanda, l'ho fatto per trovare le domande doppie, sentendo che qualcuno doveva aver già fatto questa domanda. Il mio piano era di seguire quei collegamenti dupi invece di pubblicare questa domanda. Ma questa domanda non è stata posta prima, per quanto posso vedere ... non è comparso nella lista "Domande correlate".

Quali sono alcune delle migliori risorse che hai trovato (articoli, libri, post di blog, ecc.) Per ottenere una comprensione approfondita di Expression Trees in C #? Continuo a essere sorpreso dalle loro capacità e ora sono al punto in cui sto dicendo "OK, abbastanza sorpresa, voglio fermarmi proprio ora e ottenere un dottorato in queste cose". Sto cercando materiale che sistematicamente, copra metodicamente le funzionalità e poi descriva dettagliatamente cosa puoi fare con loro.

Nota: non sto parlando di espressioni lambda. Sto parlando di Expression <T> e di tutte le cose che ne derivano e ne derivano.

Grazie.

Risposta accettata

Il capitolo 11 (Inside Expression Trees) e il capitolo 12 (Estensione di Linq) della programmazione Microsoft Linq (ISBN 13: 978-0-7356-2400-9 o ISBN 10: 0-7356-2400-3) sono stati di valore inestimabile per me. Non ho letto il libro di Jons, ma lui è un ragazzo di qualità e spiega bene le cose, quindi presumo che la sua copertura sarebbe anche buona.

Un'altra grande risorsa è il blog di Bart De Smet

Inoltre, tieni d'occhio MSDN, il codice di esempio per la creazione di un semplice Linq to Database (di Pedram Rezaei) sta per ottenere circa 40 pagine di Doco che lo spiegano.

Una risorsa davvero, davvero utile per Expression Tree infatti mi avrebbe considerato come un must have è l' espressione Albero Visualiser strumento di debug.

Si dovrebbe anche imparare il più possibile su di Espressione Albero visitatori, non c'è una buona classe di base inplementation qui .

Ecco alcuni esempi di codice derivati ​​da quella classe Visitor per eseguire alcuni debug (ho basato questo su alcuni esempi di codice nel libro che ho menzionato) la chiamata al metodo prependIndent è solo un metodo di estensione su una stringa per inserire un "-" ad ogni rientro livello.

  internal class DebugDisplayTree : ExpressionVisitor
  {
    private int indentLevel = 0;

    protected override System.Linq.Expressions.Expression Visit(Expression exp)
    {
      if (exp != null)
      {
        Trace.WriteLine(string.Format("{0} : {1} ", exp.NodeType, exp.GetType().ToString()).PrependIndent(indentLevel));
      }
      indentLevel++;
      Expression result = base.Visit(exp);
      indentLevel--;
      return result;
    }
    ...

Risposta esperta

Non pretendo che siano esaurienti, ma ho un numero di post di Expression sul mio blog . Se sei residente nel Regno Unito, presenterò anche una sessione su Expression al DDD South West a maggio (e la scorsa notte , ma troppo tardi ;-p). Potrei pubblicare la diapositiva e alcuni link da articoli correlati, se vuoi ... sfortunatamente, un pptx che si intende pronunciare raramente rende la lettura autonoma ragionevole.

Qualche altra lettura (non dal blog):

(e un intero carico di post qui e su microsoft.public.dotnet.languages.csharp - prova a cercare: + espressione -regex - "espressione regolare"



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché