2010-04-26 10 views
9

¿Qué es el reflejo en C#? ¿Dónde usamos este concepto en nuestras aplicaciones?¿Qué es el reflejo en C#? ¿Dónde usamos este concepto en nuestra aplicación?

+1

El primer golpe ya no es tan malo: http://www.google.com/search?q=what+is+reflection+in+c%23+%3F+where+we+use+this+concept + en + nuestra + aplicación% 3F –

+2

¿Estoy soñando o el título de la pregunta es más largo que la pregunta en sí? – ereOn

+7

@ 0xA3: estoy bastante seguro de que nuestra respuesta instintiva a alguien que hace una pregunta introductoria sobre StackOverflow no debe ser "hágalo usted mismo" o "RTFM". –

Respuesta

16

Reflection proporciona objetos (del tipo Type) que encapsulan ensamblajes, módulos y tipos. Puede usar la reflexión para crear dinámicamente una instancia de un tipo, vincular el tipo a un objeto existente u obtener el tipo de un objeto existente e invocar sus métodos o acceder a sus campos y propiedades. Si está utilizando atributos en el código, la reflexión le permite acceder a ellos ...

Como referencia, MSDN article on reflection y el Proyecto de Código tiene reflection bastante bien explicado ..

Por ejemplo, echar un vistazo a C# Reflection Examples.

+0

donde usamos esto? ¿Puede darme aplicación de eso? – HITESH

+0

@Hitesh Puedes usarlo con ensamblajes ... El artículo tiene algunos buenos ejemplos ... –

+0

creo que es una buena idea poner * CORTESÍA * –

5

Desde el documentation:

Reflexión proporciona objetos (de tipo Tipo) que encapsulan conjuntos, módulos y tipos. Puede utilizar reflexión para crear dinámicamente una instancia de un tipo, se unen el tipo de un objeto existente, o conseguir el tipo de un objeto existente e invocar sus métodos o acceder a sus campos y propiedades. Si está utilizando los atributos en su código, Reflection le permite acceder a ellos. Para obtener más información sobre , consulte los Atributos.

Wikipedia dice esto:

En informática, la reflexión es el proceso por el cual un programa informático puede observar y modificar su propia estructura y comportamiento. El paradigma de programación impulsado por la reflexión se llama programación reflectante . Es un tipo particular de metaprogramación.

Por ejemplo, si desea mostrar mediante programación todos los métodos de una clase, puede hacerlo de esta manera:

using System; 
using System.Reflection; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      var t = typeof(MyClass); 

      foreach (var m in t.GetMethods()) 
      { 
       Console.WriteLine(m.Name); 
      } 
      Console.ReadLine(); 
     } 
    } 


    public class MyClass 
    { 
     public int Add(int x, int y) 
     { 
      return x + y; 
     } 

     public int Subtract(int x, int y) 
     { 
      return x - y; 
     } 
    } 
} 
+0

donde usamos esto ¿Puedes darme aplicación de eso? – HITESH

+0

@HITESH He agregado un ejemplo. –

0

Usted tiene respuestas anteriores de lo que la reflexión es, algunos casos en los que I' he utilizado en el pasado:

  • un método genérico que toma en una lista de propiedades y copias esas propiedades en un objeto a otro
  • un método que utiliza la descripción atribuir a obtener el texto de enumeración, similar a this

Véase también this article ejemplos de reflexión, otros enlaces en la parte inferior de la página.

+0

gracias por darme ese enlace, pero 1 pregunta es que cuando agregamos como espacio de nombres en la página .cs simple o en alguna otra página? por favor dime eso? – HITESH

+0

Lo siento, no estoy seguro de lo que quieres decir. El espacio de nombre para la reflexión es System.Reflection. ¿Es esto lo que quieres decir? – Fermin

2

Un uso de la reflexión que encontrará en los marcos: para realizar una función particular (en ese marco) se utiliza alguna clase. Pero la clase exacta no se conoce en tiempo de compilación, sino que está configurada en algún archivo de texto, como el nombre de clase (que generalmente incluye su ensamblaje).Usando la reflexión puede tomar esta cadena y crear una instancia de esa clase en particular.

Cuestiones relacionadas