web-dev-qa-db-fra.com

quel est le reflet en C #, quels sont les avantages. Comment l'utiliser pour obtenir des avantages

Je lisais un article sur msdn à propos de réflexion mais je n’étais pas capable de le comprendre, pas même 10% sur son avantage, son utilisation.

Pourriez-vous s'il vous plaît donner un bref aperçu de ce qu'est la réflexion et comment puis-je en tirer profit.

35
Shantanu Gupta

Reflection vous permet d’écrire du code capable d’examiner divers aspects du code lui-même.

Cela vous permet de faire des choses simples comme:

  1. Vérifier le type d'un objet au moment de l'exécution (appels simples à typeof() par exemple)

  2. Inspectez les attributs d'un objet au moment de l'exécution pour modifier le comportement d'une méthode (les différentes méthodes de sérialisation dans .NET).

Pour des tâches beaucoup plus compliquées telles que:

  1. Chargement d'un assembly au moment de l'exécution, recherche d'une classe spécifique, détermination de sa correspondance avec une interface donnée et appel de certains membres de manière dynamique.

Le plus tôt est l'utilisation beaucoup plus commune. Cette dernière aide les développeurs travaillant sur des architectures de plug-ins pour leurs applications ou les personnes souhaitant échanger des assemblys lors de l'exécution, en fonction des modifications apportées à la configuration.

45
Justin Niessner

La réflexion est un moyen pour vous de découvrir par programmation les types au moment de l'exécution. Ceci est très important car les langages .NET sont fortement typés. Pouvoir accéder à ces métadonnées est extrêmement utile.

Un gros problème en ce moment (interfaces/adaptateurs fluides) repose fortement sur la réflexion. En particulier, la réflexion statique est assez grande. Si vous voulez voir des exemples spécifiques et une bonne explication de la réflexion statique, consultez:

http://jagregory.com/writings/introduction-to-static-reflection/
http://www.lostechies.com/blogs/gabrielschenker/archive/2009/02/03/dynamic-reflection-versus-static-reflection.aspx

Bien sûr, ceci est un petit sous-ensemble de réflexion en général. Si vous souhaitez plus d'informations sur l'utilisation générale de la réflexion, consultez Apress Pro C # 2008 et la plate-forme .NET 3.5, quatrième édition , chapitre 16. Il approfondit le système de types .NET et comment cela est utilisé dans les bibliothèques et au moment de l'exécution.

13
Jim Schubert

Reflection permet à votre code d’appeler des méthodes et des propriétés que vous ne connaissiez pas au moment de la compilation du code. L'une des classes intégrées qui l'utilise est XmlSerializer. Vous pouvez lui transmettre n'importe quel objet que vous souhaitez convertir en XML. Il demande à l'objet ce que toutes ses propriétés utilisent par réflexion, puis est capable de créer un document XML contenant les éléments nécessaires à la représentation de l'objet.

8
David

La réflexion est la capacité des types à fournir des informations sur eux-mêmes. Par exemple, un assembly peut vous dire ce qu'il contient, un type peut vous dire ses méthodes, ses propriétés, etc. 

Fournir dynamiquement ces informations est utile à bien des égards. Les métadonnées utilisées par les services Web constituent un exemple simple à prendre en compte: lorsqu'une personne "consomme" un service Web, une classe de proxy est générée pour son client. Ce proxy est généré à partir d'un document WSDL et le plus souvent à partir de métadonnées de type générées par réflexion. 

Un autre exemple simple est le chargement dynamique de types afin d’effectuer une unité de travail. Un projet sur lequel j'ai travaillé utilisait la réflexion pour charger des "règles" à partir d'une base de données à appliquer aux entrées dans le système.

5
t3rse

Reflection vous aide à faire de la métaprogrammation, qui est incontestablement l’une des techniques de programmation les plus cool. Google pour la métaprogrammation pour plus d'informations.

1
Jim

La réflexion est un puissant espace de noms disponible dans asp.net. en l'utilisant, nous pouvons créer un objet d'exécution dynamique et l'invoquer. Il est principalement utilisé dans le développement d'applications de type framework.

0
Sohil Raval

Un des avantages de la réflexion est qu’elle vous permet d’enregistrer toutes les modifications apportées au concepteur de jeu de données, comme une transaction SQL.

0
ALi