Quelle est la meilleure ressource pour apprendre les arbres d'expression C # en profondeur?

c# c#-3.0 expression-trees lambda

Question

Lorsque j'ai tapé cette question pour la première fois, je l'ai fait afin de trouver les questions en double, en étant sûr que quelqu'un devait déjà avoir posé cette question. Mon plan était de suivre ces liens de dupe au lieu de poser cette question. Mais pour autant que je sache, cette question n'a pas encore été posée ... elle ne figurait pas dans la liste "Questions connexes".

Quelles sont certaines des meilleures ressources que vous avez trouvées (articles, livres, billets de blog, etc.) pour acquérir une compréhension approfondie des arbres d'expression en C #? Je continue à être surpris par leurs capacités, et maintenant je suis sur le point de dire: «OK, assez de surprise. Je veux arrêter maintenant et obtenir un doctorat dans ce domaine." Je cherche du matériel qui couvre systématiquement et méthodiquement les capacités, puis passe en revue des exemples détaillés de ce que vous pouvez en faire.

Remarque: je ne parle pas d'expressions lambda. Je parle d’Expression <T> et de tout ce qui va avec et qui en découle.

Merci.

Réponse acceptée

Le chapitre 11 (Arbres d’expression internes) et le chapitre 12 (Extension de Linq) de la programmation Microsoft Linq (ISBN 13: 978-0-7356-2400-9 ou ISBN 10: 0-7356-2400-3) ont été d’une aide inestimable. Je n'ai pas lu le livre de Jons, mais c'est un gars de qualité qui explique bien les choses. Je suppose donc que sa couverture serait également bonne.

Une autre excellente ressource est le blog de Bart De Smet

Gardez également un œil sur MSDN, l’exemple de code permettant de créer une base de données Simple Linq to Database (de Pedram Rezaei) est sur le point d’obtenir environ 40 pages de Doco.

Une ressource vraiment très utile pour Expression Tree est en fait un outil indispensable pour le débogage d' Expression Tree Visualiser .

Vous devriez également en apprendre le plus possible sur Expression Tree Visitors. Il existe une très bonne application de classe de base ici .

Voici un exemple de code dérivé de cette classe Visitor pour effectuer un débogage (je me suis basé sur un exemple de code dans le livre que j'ai mentionné) l'appel de la méthode prependIndent est simplement une méthode d'extension sur une chaîne permettant de placer un "-" à chaque retrait. niveau.

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

Réponse d'expert

Je ne prétends pas qu’ils soient complets, mais j’ai publié plusieurs articles sur Expression sur mon blog . Si vous êtes basé au Royaume-Uni, je présenterai également une session sur l' Expression à DDD South West en mai (et hier soir , mais trop tard ;-p). Je pourrais publier le diaporama et certains des liens d’articles connexes, si vous le souhaitez. Malheureusement, un pptx destiné à être parlé rend rarement la lecture autonome sensée.

Une autre lecture (pas du blog):

(et toute une série de publications ici et sur microsoft.public.dotnet.languages.csharp - essayez de rechercher: + expression -regex - "expression régulière"




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi