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

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

Question

Quand je tapais cette question, je l'ai fait pour trouver des questions en double, certain que quelqu'un doit avoir déjà posé cette question. Mon plan était de suivre ces liens Dupe au lieu de poster cette question. Mais cette question n'a pas été posée pour autant que je le vois ... il ne se est pas dans la liste des « questions connexes ».

Quels sont quelques-unes des meilleures ressources que vous avez trouvé (articles, livres, blogs, etc.) pour obtenir un je continue à me surpris en profondeur la compréhension des arbres d'expression en C #? par leurs capacités, et maintenant je suis au point où je dis: « OK, assez surprise. Je veux arrêter en ce moment et d'obtenir un doctorat en ces choses. » Je suis à la recherche pour le matériel qui systématiquement, méthodiquement couvre les capacités et marche ensuite à 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 et toutes les choses qui vont avec et en découlent.

Merci.

Était-ce utile?

La solution

Chapitre 11 (à l'intérieur des arbres d'expression) et le chapitre 12 (Extension Linq) de programmation Microsoft Linq (ISBN 13: 978-0-7356-2400-9 ou ISBN 10: 0-7356-2400-3) a été très précieux pour moi. Je n'ai pas lu livre Jons, mais il est un gars de qualité et explique bien les choses, donc je suppose que sa couverture serait également bon.

Une autre grande ressource est blog de Bart De Smet

De plus, gardez l'œil sur MSDN, l'exemple de code pour la construction d'un expression arbre outil de débogage de Visualiseur.

Vous devez également apprendre autant que possible sur Expression arbre visiteurs, il y a une inplementation de classe de base assez bon ici .

Voici quelques exemples de code dérivé de cette classe de visiteurs pour faire du débogage (Je me suis basé sur un exemple de code dans le livre je l'ai mentionné) l'appel de méthode prependIndent est juste une méthode d'extension sur une chaîne pour mettre un « - » à chaque niveau de retrait.

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

Autres conseils

Je ne les prétend pas être exhaustive, mais j'ai un certain nombre de messages de Expression sur mon Blog . Si vous êtes basé au Royaume Uni, je présenterai également une session sur Expression DDD Sud-Ouest de mai (et la nuit dernière, mais ;-P trop tard). Je pouvais poster la plate-forme de diapositives et certains des liens d'articles connexes, si vous voulez ... malheureusement, un pptx destiné à être parlé fait rarement lecture autonome sensible.

Une autre lecture (pas du blog):

(et une charge entière des postes ici et sur microsoft.public.dotnet.languages.csharp  - essayez de rechercher: + expression -regex - "expression régulière"

En savoir Scheme. Les expressions utilisent les mêmes principes que le calcul lambda, et par conséquent vous donner une meilleure idée.

Vous pouvez consulter le DLR, qui est similaire, mais beaucoup moins élégant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top