54 votes

Quelle est la meilleure ressource pour l'apprentissage du C# des arbres d'expression en profondeur?

Quand j'ai tapé cette question, je l'ai fait pour trouver le double des questions, persuadé que quelqu'un a déjà posé cette question. Mon plan était de suivre celles de la dupe des liens au lieu de poster cette question. Mais cette question n'a pas été demandé avant aussi loin que je peux voir ... ce n'est pas dans les "Questions Connexes" de la liste.

Quelles sont certaines des meilleures ressources que vous avez trouvé (des articles, des livres, des articles de blog, etc.) pour acquérir une compréhension en profondeur des Arbres d'Expression en C#? Je reçois surpris par leurs capacités, et maintenant j'en suis au point où je me dis: "OK, assez surprise. Je veux arrêter tout de suite et obtenir un Doctorat dans ces choses." Je suis à la recherche pour le matériel qui systématiquement, méthodiquement couvre les capacités et puis des promenades à travers des exemples détaillés de ce que vous pouvez faire avec eux.

Note: je ne parle pas des expressions lambda. Je parle de l'Expression< T > et toutes les choses qui vont avec et en découlent.

Merci.

37voto

Tim Jarvis Points 12024

Chapitre 11 (à l'Intérieur des Arbres d'Expression) et le chapitre 12 (Extension Linq) de la Programmation de Microsoft Linq (ISBN 13: 978-0-7356-2400-9 ou ISBN 10: 0-7356-2400-3) a été d'une valeur inestimable pour moi. Je n'ai pas lu Jons livre, mais il est une qualité de guy et explique bien les choses, donc je suppose que sa couverture serait également bon.

Une autre grande ressource est Bart De Smet blog

Aussi, gardez un oeil sur MSDN, l'exemple de code pour la construction d'une Linq Simple de Base de données (par Pedram Rezaei) est sur le point d'obtenir environ 40 pages de Doco l'expliquer.

EDIT: (j'ai peut simplement continuer à ajouter des liens vers les ressources ici au fil du temps, comme il est un utile de l'espace réservé pour cette info.)

Vraiment, vraiment ressource utile pour l'Expression de l'Arbre en fait, je la considère comme une doit avoir est l' Expression de l'Arbre Visualiser outil de débogage.

Vous devez également apprendre autant que vous pouvez au sujet de l'Expression de l'Arbre, il y a une assez bonne base de classe inplementation ici.

Voici un exemple de code dérivé de celui de la catégorie des Visiteurs à faire un peu de débogage (je me suis basé sur ce un exemple de code dans le livre que j'ai mentionné) la prependIndent appel de méthode est juste une extension de la méthode sur une chaîne pour mettre un "--" à chaque niveau d'indentation.

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

17voto

Marc Gravell Points 482669

Je ne prétend pas à être exhaustive, mais j'ai un certain nombre de Expression posts sur mon blog. Si vous êtes basé au royaume-UNI, je vais également présenter une session sur l' Expression à DDD Sud-Ouest en Mai (et la nuit dernière, mais trop tard ;-p). Je pouvais poster de la série de diapositives et quelques liens, des articles, si vous voulez... malheureusement, un pptx destiné à être parlée est rarement sensible autonome de la lecture.

Certains de lecture (pas de blog):

(et un tas de posts ici et sur microsoft.public.dotnet.les langues.csharp - essayez de rechercher: +expression -regex"expression régulière"

5voto

leppie Points 67289

Apprendre Régime. Les Expressions utilisent les mêmes principes que le lambda calcul, et donc vous donnera une meilleure compréhension.

Alternativement, vous pouvez regarder le DLR, qui est similaire, mais beaucoup moins élégant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X