Condividi tramite


Esempio Reflection Invoke Technology

Aggiornamento: novembre 2007

In questo esempio viene illustrato come implementare l'associazione tardiva a qualsiasi assembly gestito dotato di classi e metodi pubblici. Dalla riga di comando è necessario innanzitutto selezionare un assembly, un tipo, un metodo e i parametri. L'esempio tenterà di caricare l'assembly, di individuare il tipo e il metodo e di richiamare il metodo con i parametri passati. Inoltre, l'esempio tenterà di effettuare le conversioni di tipi necessarie per le chiamate al metodo che accettano parametri diversi da stringhe. Le classi Reflection consentono di eseguire questa funzionalità avanzata in modo estremamente semplice. Nell'esempio è incluso un progetto DLL denominato Tester.dll, che fornisce un tipo con alcuni metodi da utilizzare nell'esempio Invoke.

Per informazioni sull'utilizzo degli esempi, vedere i seguenti argomenti:

Download sample

Per compilare l'esempio utilizzando il prompt dei comandi

  1. Spostarsi in una delle sottodirectory specifiche del linguaggio relative all'esempio.

  2. Dalla riga di comando digitare msbuild InvokeCS.sln o msbuild InvokeVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare.

Per compilare l'esempio utilizzando Visual Studio

  1. Aprire Esplora risorse, quindi spostarsi in una delle sottodirectory specifiche del linguaggio relative all'esempio.

  2. Fare doppio clic sull'icona relativa a InvokeCS.sln o InvokeVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare, per aprire il file in Visual Studio.

  3. Scegliere Compila soluzione dal menu Compila.

Nota:

L'esempio compila un'applicazione console. Per visualizzare l'output dell'applicazione, è necessario avviarla dalla finestra del prompt dei comandi.

L'applicazione Invoke.exe accetta parametri della riga di comando che indicano gli elementi da richiamare. L'utilizzo dell'esempio viene illustrato se l'esempio viene eseguito senza alcun parametro. Per richiamare un metodo su un tipo, utilizzare la seguente sintassi:

Invoke.exe [Assembly] [Type] [Method] [Parameters...]  

Per eseguire l’esempio

  1. Spostarsi nella directory contenente Invoke.exe e Tester.dll.

  2. Digitare Invoke.exe [assembly] [tipo] [metodo] [parametri] dalla riga di comando.

Osservazioni

Lo strumento msbuild compila due file, Invoke.exe e Tester.dll.

Nell'esempio seguente il metodo ShowMessage viene chiamato sul tipo SomeType con tre parametri, come indicato di seguito:

Invoke.exe Tester.dll Microsoft.Samples.SomeType ShowMessage "This is an example of a message." "Question:" 4

Per ulteriori informazioni sulla funzionalità di Reflection Invoke, vedere i commenti nei file di codice sorgente.

Nell'elenco riportato di seguito vengono descritte in modo sintetico le classi e le tecnologie utilizzate dall'esempio.

  • Reflection

    • Assembly- Consente di caricare un assembly e di eseguirvi la ricerca di un tipo.

    • Type - Consente di ottenere una matrice di istanze di MemberInfo, nonché per fare riferimento a un tipo, se necessario, durante la creazione di un'istanza.

    • MethodInfo - Consente di rilevare informazioni relative a un unico metodo, ad esempio i parametri e il nome. Nell'esempio viene eseguito il confronto tra le informazioni rilevate e quelle fornite nella riga di comando. La classe MethodInfo consente inoltre di richiamare un metodo.

    • ParameterInfo - Consente di individuare il tipo dei parametri dei metodi, in modo che nell'esempio sia possibile eseguire il cast degli argomenti della riga di comando in modo corretto.

    • Activator - Consente di creare un'istanza di un tipo, qualora nell'esempio venga rilevato che è necessario effettuare una chiamata a un metodo di istanza.

  • System

    • Array - Consente di copiare una parte di una matrice in un'altra matrice.

    • Convert - Consente di tentare l'esecuzione del cast degli argomenti della riga di comando, di tipo String, nel tipo corretto per i parametri passati ai metodi di un tipo specifico.

Vedere anche

Riferimenti

Activator

Array

Assembly

AssemblyBuilderAccess

Convert

MethodAttributes

MethodInfo

ParameterInfo

System.Reflection

Type

Altre risorse

Reflection

Creazione di assembly e metodi dinamici

Generazione e compilazione dinamica di codice sorgente