Qual è la miglior risorsa per l'apprendimento C # alberi di espressione in modo approfondito?

StackOverflow https://stackoverflow.com/questions/683620

Domanda

Quando ho digitato questa domanda, ho fatto così, al fine di trovare le domande duplicate, sentendosi sicuro che qualcuno deve avere già posto questa domanda. Il mio piano era quello di seguire quei link babbeo invece di inviare questa domanda. Ma questa domanda non è stato chiesto prima, per quanto posso vedere ... non si presentò nella lista "Domande correlate".

Quali sono alcune delle migliori risorse che hai trovato (articoli, libri, blog, etc.) per acquisire una comprensione approfondita di Expression Trees in C #? Continuo ad essere sorpreso da le loro capacità, e ora sono al punto in cui sto dicendo, "Ok, basta sorpresa. voglio fermare proprio ora e ottenere un dottorato di ricerca in queste cose." Sto cercando materiale che sistematicamente, copre metodicamente le capacità e poi cammina attraverso esempi dettagliati di ciò che si può fare con loro.

Nota: Non sto parlando di espressioni lambda. Sto parlando di espressione e tutte le cose che vanno con esso e ne derivano.

Grazie.

È stato utile?

Soluzione

Capitolo 11 (Inside Expression Trees) e il capitolo 12 (estensione LINQ) di Programming Microsoft LINQ (ISBN 13: 978-0-7356-2400-9 o 10 ISBN: 0-7356-2400-3) è stato prezioso per me. Non ho letto Jons libro, ma lui è un ragazzo di qualità e spiega bene le cose, quindi immagino che la sua copertura Sarebbe anche bene.

Un'altra grande risorsa è di Bart De Smet blog

Inoltre, tenere d'occhio su MSDN, il codice di esempio per la costruzione di un semplice LINQ to database (da Pedram Rezaei) sta per cominciare circa 40 pagine di Doco spiegarla.

Una realtà, risorsa davvero utile per Expression Tree infatti mi avrebbe considerato come un deve avere è 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 derivato da quella classe visitatore a fare un po 'di debug (ho basato questo su alcuni esempi di codice nel libro che ho citato) la chiamata al metodo prependIndent è solo un metodo di estensione su una stringa di mettere un "-" ad ogni livello di rientro.

  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;
    }
    ...

Altri suggerimenti

Non pretendo loro di essere esauriente, ma ho un numero di posti Expression sul mio blog . Se si sono basati nel Regno Unito, che presenterà anche una sessione su Expression a DDD South West in maggio (e la scorsa notte , ma troppo tardi ;-P). Potrei pubblicare il ponte scorrevole e alcuni dei collegamenti da articoli correlati, se vuoi ... purtroppo, un pptx destinato ad essere parlato di rado rende la lettura autonoma ragionevole.

Qualche altra lettura (non dal blog):

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

Ulteriori Scheme. Le espressioni usano gli stessi principi lambda calcolo, e quindi vi darà qualche migliore comprensione.

In alternativa, si può guardare la DLR, che è simile ma molto meno elegante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top