OK, je ne comprends tout simplement pas. P>
J'ai lu autant que je peux sur le sujet sans savoir ce que c'est tout à propos de: p>
6 Réponses :
Supposons que vous écriviez un fournisseur de requêtes pour Linq (par exemple, le fournisseur SQL Server qui traduit les requêtes LINQ vers SQL) - Vous êtes peut-être un fournisseur de DB et vous souhaitez mettre en œuvre la prise en charge de votre moteur de DB. Vous consommeriez les arbres d'expression pour construire votre SQL. P>
Ils sont vraiment très utiles. P>
Chaque expression Lambda peut devenir une méthode ou un arbre d'expression. P>
Les méthodes sont évidemment exécutées comme originales dans le cadre. P>
Les arbres d'expression peuvent être traduits à une autre représentation. Par exemple, Linq pour SQL convertit les expressions de requête en syntaxe SQL et les exécuter à distance sur le serveur. P>
Un arborescence d'expression est essentiellement un bit analysé de code qui vous est manipulé en tant que données. Votre programme peut ensuite interpréter ces données comme vous le souhaitez à l'heure d'exécution. Cela vous permet d'interpréter le code à la lumière de votre logique commerciale. p>
Dites que vous avez besoin de définir les règles d'entreprise. Vous pouvez définir une syntaxe pour eux basée sur C #, puis avoir la nouvelle règle écrite directement dans le code source. En l'acceptant dans votre moteur comme arbre d'expression, le travail fastidieux de l'analyse, la vérification de la syntaxe et la vérification de type est déjà effectué pour vous. Vous devez juste courir dans l'arbre et appliquer la règle. P>
Ils sont assez utiles. Outre Linq à SQL, ils sont utilisés pour créer un Aide HTML fortement typé dans MVC 2.0 ou pour fournir des moyens d'utiliser GPU pour calculer le calcul mathématique, c'est-à-dire Projet Brahma . P>
essentiellement des arbres d'expression donne la possibilité d'interpréter une expression compilée au lieu de l'exécuter. Donc, ils sont moyens de créer une sorte de DSL dans C #. p>
Lorsque vous écrivez quelque chose comme ceci: sa transformé en arbre d'expression. Lorsque vous utilisez cette requête LINQ à nouveau SQL, le sous-couche LINQ-TO-SQL utilise cet arborescence pour créer une requête SQL haute performance. P> Donc, il est utilisé "derrière la scène" en vous faisons des choses Linq. P> Vous pouvez construire vos propres arbres d'expressions. Cela pourrait être très utile si vous voulez faire des requêtes dynamiques. Cela pourrait être différent type de critères de recherche. Vous pouvez même l'utiliser pour effectuer plusieurs jointures intérieures avec les clauses et autres trucs sympas, même sans connaître les types que vous utilisez à l'avant. Cela bien que requriers une réflexion à faire. p> p>
Les arbres d'expression API a été écrit à l'origine pour permettre la création de fournisseurs de linq personnalisés. Fondamentalement, si vous utilisez LINQ vers des objets, vous ne traitez pas d'arbres d'expression. Mais si vous travaillez avec LINQ vers SQL, le fournisseur LINQ fonctionne avec des arbres d'expression. P>
in .NET 4.0 Les arbres d'expression API ont été étendus et est fortement utilisé par DLR. Donc, si vous allez dire que vous disons ajouter une nouvelle languette dynamique à la .NET, vous en aurez besoin. P>
Comme cela se produit souvent, les gens ont trouvé plus de façons d'utiliser des arbres d'expression. Parfois, vous pouvez utiliser et obtenir plus d'informations sur les objets au lieu de réflexion. Dans .NET 4, vous pouvez également les utiliser pour générer des méthodes dynamiques. Mais rappelez-vous que ceux-ci sont plus comme des tours avancés plutôt que des scénarios recommandés. P>
Voici quelques liens que vous pouvez jeter un coup d'oeil à: p>
Principes de base de l'arbre d'expression P>
Obtenir des informations sur les objets, les types et les membres avec des arbres d'expression p>
Génération de méthodes dynamiques avec des arbres d'expression dans Visual Studio 2010 P>