2010-06-23 19 views
26

Estaba leyendo un artículo en msdn sobre reflection pero no pude entenderlo ni siquiera 10% sobre su beneficio, su uso.lo que es reflejo en C#, ¿cuál es el beneficio? Cómo usarlo para obtener beneficios

Podría darnos una breve descripción general de qué es reflexión y cómo puedo aprovecharla.

+0

duplicados posibles: http://stackoverflow.com/questions/1897712 ... http://stackoverflow.com/questions/1859902 –

+0

posible duplicado de [Reflexión. ¿Qué podemos lograr con ella] (http://stackoverflow.com/questions/1897712/reflection-what-can-we-achieve-using-it) –

+0

Para Todos:? Todavía no podría conseguir, cómo me estoy siendo benifited. Podría alguien de ustedes citar un ejemplo más simple de su beneficio en términos de codificación de código de ayuda para hacer más reutilizables y en términos de funcionalidad –

Respuesta

5

La reflexión es la capacidad de los tipos para proporcionar información acerca de ellos mismos. Por ejemplo, un ensamblaje puede decirle qué contiene, un tipo puede indicarle sus métodos, propiedades, etc.

Proporcionar dinámicamente esta información es útil de muchas maneras. Un ejemplo simple para pensar es en los metadatos utilizados por los servicios web: cuando una persona "consume" un servicio web, se genera una clase proxy para su cliente. Este proxy se genera a partir de un documento WSDL y lo más a menudo se genera a partir de metadatos de tipo generados a través de la reflexión.

Otro ejemplo simple es la carga dinámica de tipos para realizar alguna unidad de trabajo. Un proyecto en el que trabajé utilizó la reflexión para cargar "reglas" de una base de datos para aplicarlas a las entradas en el sistema.

7

Reflection permite que su código invoque métodos y propiedades que no conocía cuando se compiló el código. Una de las clases integradas que usa esto es XmlSerializer. Puede pasarle cualquier objeto que quiera convertir a XML. Le pregunta al objeto qué todas sus propiedades están usando la reflexión y luego puede hacer un documento XML que contiene los elementos necesarios para representar el objeto.

37

Reflection le permite escribir código que puede inspeccionar varios aspectos del código en sí.

que le permite hacer cosas simples como:

  1. Comprobar el tipo de un objeto en tiempo de ejecución (llamadas simples a typeof() por ejemplo)

  2. Inspeccionar los atributos de un objeto en tiempo de ejecución a cambiar el comportamiento de un método (los diversos métodos de serialización en .NET)

Para tareas mucho más complicadas como:

  1. Cargando un ensamblaje en tiempo de ejecución, buscando una clase específica, determinando si coincide con una interfaz dada, e invocando ciertos miembros dinámicamente.

El uso anterior es mucho más común. Lo último es útil para los desarrolladores que trabajan en arquitecturas de plug-in para sus aplicaciones o personas que desean intercambiar ensamblajes en tiempo de ejecución dependiendo de los cambios de configuración.

12

La reflexión es una forma de descubrir programáticamente los tipos en tiempo de ejecución. Esto es muy importante porque los lenguajes .NET están fuertemente tipados. Poder acceder a esos metadatos es extremadamente útil.

Una gran cosa en este momento (interfaces/adaptadores fluidos) depende en gran medida de la reflexión. En particular, la reflexión estática es bastante grande.Si desea ver ejemplos específicos y una buena explicación de la reflexión estática, echa un vistazo a:

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

Por supuesto, esto un pequeño subconjunto de la reflexión en general. Si desea obtener más información sobre el uso general de la reflexión, consulte Apress Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition, Capítulo 16. Se profundiza bastante en el sistema de tipo .NET y cómo se usa en bibliotecas y en tiempo de ejecución.

1

reflexión ayuda a hacer metaprogramming, que es indiscutiblemente una de las técnicas de programación más frescos. Google para metaprogramación para más información.

0

Uno de los beneficios de la reflexión es que le permite guardar todos los cambios en el diseñador conjunto de datos como una transacción en SQL

0

La reflexión es poderoso espacio de nombres disponibles en asp.net. al usarlo, podemos crear un tiempo de ejecución de objeto dinámico e invocarlo. Se usa principalmente en el desarrollo de aplicaciones de tipo de marco.

+2

La reflexión no es parte de ASP.NET o cualquier otra tecnología .NET, ya que es la capacidad de investigar un ensamblado en tiempo de ejecución, independientemente del tipo de proyecto que esté utilizando. – graumanoz

Cuestiones relacionadas