Condividi tramite


Procedura dettagliata: esposizione di un modello di plug-in .NET

Aggiornamento: novembre 2007

In questa procedura dettagliata viene illustrata l'estensione dell'esempio MFC Scribble classico in modo da supportare un modello di plug-in tramite tecnologie .NET.

La soluzione MFC Scribble viene estesa in modo da esporre un modello di oggetti .NET. Nell'esempio è inoltre esposta un'architettura plug-in che consente a plug-in .NET di interagire pienamente con la soluzione MFC Scribble.

Prerequisiti

Esempio ScribbleDotNET: estensione di Scribble con funzionalità CLR

Per generare ed eseguire l'esempio

  1. Aprire il file della soluzione Scribble.sln nell'ambiente di sviluppo di Visual Studio.

  2. Compilare la soluzione utilizzando la configurazione Debug o Release.

  3. In Esplora soluzioni aprire il file plugins.xml di Elementi di soluzione.

  4. Nel file plugins.xml modificare la prima parte del percorso negli elementi Assembly in modo che corrisponda alla configurazione scelta per la compilazione, modificare ad esempio "VBShapes.dll" in "Debug\VBShapes.dll" e "CSPenColor.dll" in "Debug\CSPenColor.dll" se per la compilazione è stata utilizzata la configurazione Debug.

  5. Eseguire il file eseguibile generato.

  6. Selezionare Plugins nella barra dei menu.

    1. Scegliere l'opzione di menu Disegna forme. Verrà eseguito il plug-in VBShapes che disegnerà tre profili di differenti quadrati colorati.
  7. Selezionare Plugins nella barra dei menu.

    1. Scegliere l'opzione di menu Cambia colore penna. Verrà eseguito il plug-in CSPenColor che consente di selezionare il colore della penna tramite una finestra di dialogo dei colori .NET.

Funzionamento

Questo esempio viene implementato in due fasi principali:

  1. Esposizione di un modello di oggetti per gli scrittori di plug-in

    Sono esposte due principali interfacce per implementare il modello plug-in. Per una definizione di queste interfacce, vedere il progetto ScribbleApp:

    • IScribbleApp - Questa interfaccia espone un insieme di funzionalità che consentono ai writer di plug-in di interagire con un'applicazione Scribble in esecuzione. L'interfaccia viene implementata da Scribble (vedere ScribbleApp.cpp nel progetto Scribble) e un'istanza dell'interfaccia implementata viene passata alla funzione membro Run() di IScribblePlugin, discussa più avanti.

    • IScribblePlugin - Questa interfaccia viene implementata dal writer di plug-in, che utilizzerà le funzionalità esposte da IScribbleApp per implementare i plug-in.

  2. Estensione dell'applicazione Scribble di base per trovare, caricare ed eseguire i plug-in

    • Viene innanzitutto analizzato un file XML contenente un elenco dei plug-in da caricare. Tutti i plug-in rilevati vengono caricati e viene verificato se il relativo tipo è corretto utilizzando System.Reflection. Più precisamente, viene utilizzata la riflessione per cercare tra i tipi esposti dal modulo di plug-in e verificare che uno di questi implementi l'interfaccia IPlugin esposta. Questa implementazione è disponibile in PluginBld.cpp nel progetto Scribble.

    • CScribbleApp utilizza quindi le routine implementate in PluginBld.cpp per ottenere un elenco di tutti i plug-in trovati. Per ciascun plug-in di questo elenco viene creata in modo dinamico una voce di menu all'interno del menu Plugins. Selezionando una voce dal menu Plugins, verrà eseguito il plug-in corrispondente.

Tecnologie utilizzate

  • Utilizzo di XML per specificare il percorso dei plug-in

  • Utilizzo della reflection per verificare la correttezza del tipo del plug-in specificato nel file XML

  • Definizione di un modello di oggetti per la creazione di plug-in

  • Caricamento ed esecuzione del plug-in in un'applicazione C++

Vedere anche

Attività

Esempio SCRIBBLE: applicazione di disegno MDI MFC