2010-04-26 8 views
9

Che cos'è il riflesso in C#? Dove usiamo questo concetto nelle nostre applicazioni?Che cos'è il riflesso in C#? Dove usiamo questo concetto nella nostra applicazione?

+1

Il primo hit non è poi così male: http://www.google.com/search?q=what+is+reflection+in+c%23+%3F+where+we+use+this+concept + in + nostra + applicazione% 3F –

+2

Sto sognando o il titolo della domanda è più lungo della domanda stessa? – ereOn

+7

@ 0xA3: Sono abbastanza sicuro che la nostra risposta istintiva a qualcuno che fa una domanda introduttiva su StackOverflow non dovrebbe essere "go go it yourself" o "RTFM". –

risposta

16

Riflessione fornisce oggetti (di tipo Type) che incapsulano assiemi, moduli e tipi. È possibile utilizzare la riflessione per creare dinamicamente un'istanza di un tipo, associare il tipo a un oggetto esistente o ottenere il tipo da un oggetto esistente e richiamarne i metodi o accedere ai relativi campi e proprietà. Se si utilizza attributi nel codice, la riflessione consente di accedervi ...

Per riferimento, MSDN article on reflection e The Code Project ha reflection abbastanza ben spiegato ..

Per esempio, uno sguardo ai C# Reflection Examples.

+0

dove usiamo questo? Posso darmi l'applicazione di quello ?? – HITESH

+0

@Hitesh Puoi usarlo con gli assembly ... L'articolo ha alcuni buoni esempi ... –

+0

Penso che sia una buona idea mettere * CORTESIA * –

5

Dal documentation:

Riflessione fornisce oggetti (di tipo tipo) che incapsulano assiemi moduli e tipi. È possibile utilizzare riflessione per creare dinamicamente una un'istanza di un tipo, associare il tipo di un oggetto esistente, o di ottenere il tipo da un oggetto esistente e richiamare i suoi metodi o accedere i suoi campi e proprietà. Se si utilizzano gli attributi nel codice, Reflection consente di accedervi. Per ulteriori informazioni su , vedere Attributi.

Wikipedia dice questo:

In informatica, la riflessione è il processo mediante il quale un programma per computer può osservare e modificare il proprio struttura e il comportamento. Il paradigma di programmazione guidato dalla riflessione si chiama programmazione riflettente . È un tipo particolare di metaprogrammazione.

Per esempio, se si desidera visualizzare di programmazione tutti i metodi di una classe, si potrebbe fare in questo modo:

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

dove usiamo questo ? puoi darmi l'applicazione ?? – HITESH

+0

@HITESH Ho aggiunto un esempio. –

0

Hai risposte di cui sopra di ciò riflessione è, alcuni casi in cui ho' ve usato in passato:

  • un metodo generico che prende in un elenco di proprietà e copie tali proprietà in un oggetto all'altro
  • un metodo che utilizza la descrizione attributo per ottenere il testo per enum, simile a this

anche vedere this article esempi di riflessione, ulteriori link in fondo alla pagina.

+0

grazie per avermi fornito tale collegamento, ma una domanda è che quando aggiungiamo come spazio dei nomi nella semplice pagina .cs o in qualche altra pagina? Per favore, dimmelo? – HITESH

+0

Scusa, non sono sicuro di cosa intendi. Lo spazio dei nomi per la riflessione è System.Reflection. È ciò che intendi? – Fermin

2

Un uso della riflessione che si trova nei framework: per eseguire una funzione particolare (in tale framework) viene utilizzata una classe. Ma la classe esatta non è nota al momento della compilazione, ma è configurata in qualche file di testo, come il nome della classe (di solito includendo il suo assembly).Usando il reflection puoi prendere questa stringa e creare un'istanza di quella particolare classe.

Problemi correlati