Condividi tramite


Personalizzare ed estendere un linguaggio specifico del dominio

Visual Studio Modeling and Visualization SDK (VMSDK) offre diversi livelli in cui è possibile definire gli strumenti di modellazione:

  1. Definire un linguaggio specifico del dominio usando il diagramma di definizione DSL. È possibile creare rapidamente un linguaggio DSL con una notazione diagrammatica, un modulo XML leggibile e gli strumenti di base necessari per generare codice e altri artefatti. Per altre informazioni, vedere Come definire un linguaggio specifico per dominio.

  2. Ottimizzare il DSL usando funzionalità più avanzate della DSL Definition. Ad esempio, è possibile visualizzare collegamenti aggiuntivi quando l'utente crea un elemento. Queste tecniche vengono ottenute principalmente nella definizione DSL e alcune richiedono alcune righe di codice di programma.

  3. Estendere gli strumenti di modellazione usando il codice del programma. VMSDK è progettato specificamente per semplificare l'integrazione delle estensioni con il codice generato dalla definizione DSL. Per altre informazioni, vedere Scrittura di codice per personalizzare un linguaggio Domain-Specific.

Annotazioni

Dopo aver aggiornato il file definizioni DSL, non dimenticare di fare clic su Trasforma tutti i modelli nella barra degli strumenti di Esplora soluzioni prima di ricompilare la soluzione.

Riferimento articolo

Per ottenere questo effetto Fare riferimento a questo argomento
Consentire all'utente di impostare le proprietà di colore e stile di una forma. Fare clic con il pulsante destro del mouse sulla forma o classe connettore, scegliere Aggiungi Visibile e fare clic su un elemento.
Le diverse classi di elementi del modello hanno un aspetto simile nel diagramma, condividendo proprietà come altezza e larghezza iniziali, colore, descrizioni comando. Usare l'ereditarietà tra forme o classi del connettore. I mapping tra forme derivate e classi di dominio derivate ereditano i dettagli di mapping degli elementi padre.

In alternativa, eseguire il mapping di classi di dominio diverse alla stessa classe di forma.
Una classe di elemento del modello viene visualizzata da contesti di forme diversi. Eseguire il mapping di più classi di forme alla stessa classe di dominio. Quando si compila la soluzione, seguire la segnalazione degli errori e specificare il codice richiesto per decidere quale forma usare.
Il colore della forma o altre caratteristiche, ad esempio il tipo di carattere, indicano lo stato corrente. Vedere Aggiornamento di forme e connettori per riflettere il modello.

Creare una regola che aggiorni le proprietà esposte. Vedere Le regole propagano le modifiche all'interno del modello.

In alternativa, usare OnAssociatedPropertyChanged() per aggiornare funzionalità non esposte, ad esempio frecce di collegamento o tipo di carattere.
L'icona sulla forma cambia per indicare lo stato. Configura la visibilità della mappatura del decoratore nella finestra Dettagli DSL. Individuare più elementi decoratori di immagine nella stessa posizione. Vedere Aggiornamento di forme e connettori per riflettere il modello.

In alternativa, eseguire l'override di ImageField.GetDisplayImage(). Consulta l'esempio in ImageField.
Impostare un'immagine di sfondo su qualsiasi forma Eseguire l'override di InitializeInstanceResources() per aggiungere un oggetto ImageField ancorato.
Annidare forme a qualsiasi profondità Configurare un albero di incorporamento ricorsivo. Definire BoundsRules per contenere le forme.
Collegare connettori a punti fissi sul limite di un elemento. Definire gli elementi del terminale incorporati, rappresentati da porte di piccole dimensioni nel diagramma. Usare BoundsRules per stabilizzare le porte sul posto. Vedere l'esempio del Diagramma del circuito in Visualizzazione e Modellazione SDK.
Il campo di testo visualizza un valore derivato da altri valori. Mappare il decoratore di testo a una proprietà di dominio di archiviazione calcolata o personalizzata. Per altre informazioni, vedere Proprietà di archiviazione calcolate e personalizzate.
Propagare le modifiche tra gli elementi del modello o tra forme Vedere Convalida in un linguaggio Domain-Specific.
Propagare le modifiche alle risorse, come altre estensioni di Visual Studio, al di fuori del negozio. Vedere I gestori eventi propagano le modifiche all'esterno del modello.
Nella finestra proprietà vengono visualizzate le proprietà di un elemento correlato. Configurare l'inoltro delle proprietà. Vedere Personalizzazione della finestra Proprietà.
Categorie di proprietà La finestra delle proprietà è suddivisa in sezioni denominate categorie. Impostare la categoria delle proprietà del dominio. Le proprietà con lo stesso nome di categoria verranno visualizzate nella stessa sezione. È anche possibile impostare la categoria di un ruolo di relazione.
Controllare l'accesso utente alle proprietà del dominio Impostare Is Browsable false per impedire la visualizzazione di una proprietà di dominio nella finestra Proprietà in fase di esecuzione. È comunque possibile eseguirne il mapping ai decoratori di testo.

Is UI Read Only impedisce agli utenti di modificare una proprietà di dominio.

L'accesso alla proprietà del dominio tramite il programma non è interessato.
Modificare il nome, l'icona e la visibilità dei nodi in Esplora modelli DSL. Vedere Personalizzazione dell'Esplora modelli.
Abilitare copia, taglia e incolla Impostare la proprietà Abilita copia incolla del nodo Editor in Esplora DSL.
Copiare i collegamenti di riferimento e le relative destinazioni ogni volta che viene copiato un elemento. Ad esempio, copiare Commenti associati a un elemento. Impostare la proprietà Propagates Copy del ruolo di origine (rappresentata dalla riga a un lato della relazione di dominio nel diagramma di definizione DSL).

Scrivere codice per eseguire l'override di ProcessOnCopy per ottenere effetti più complessi.

Vedere Personalizzazione del comportamento di copia.
Eliminare, replicare o ricollegare gli elementi correlati quando viene eliminato un elemento. Impostare il valore Propagates Delete di un ruolo di relazione. Per effetti più complessi, eseguire l'override dei metodi ShouldVisitRelationship e ShouldVisitRolePlayer nella classe MyDslDeleteClosure, definiti in DomainModel.cs.
Mantieni la disposizione e l'aspetto della forma durante la copia e il trascinamento e rilascio. Aggiungere forme e connettori all'oggetto copiato ElementGroupPrototype. Il metodo più pratico per eseguire l'override è ElementOperations.CreateElementGroupPrototype()

Vedere Personalizzazione del comportamento di copia.
Incollare le forme in una posizione scelta, ad esempio la posizione corrente del cursore. Eseguire l'override ClipboardCommandSet.ProcessOnCopy() per usare la versione specifica della posizione di ElementOperations.Merge().Vedere la Personalizzazione del Comportamento di Copia.
Creare collegamenti aggiuntivi durante l'incolla Eseguire l'override di ClipboardCommandSet.ProcessOnPasteCommand()
Abilita il trascinamento della selezione da questo diagramma, altri DSL e elementi di Windows Consulta Procedura: Aggiungere un gestore di trascinamento
Consente di trascinare una forma o uno strumento su una forma figlio, ad esempio una porta, come se fosse stata trascinata nella forma genitore. Definire una direttiva Element Merge nella classe oggetto di destinazione per inoltrare l'oggetto eliminato all'elemento padre. Vedere Personalizzazione della creazione e dello spostamento degli elementi.
Consente di trascinare una forma o uno strumento in una forma e di creare collegamenti o oggetti aggiuntivi. Ad esempio, per consentire di associare un commento a un elemento al quale deve essere collegato. Definire una direttiva element merge nella classe di dominio di destinazione e definire i collegamenti da generare. In casi complessi, è possibile aggiungere codice personalizzato. Vedere Personalizzazione della creazione e dello spostamento degli elementi.
Creare un gruppo di elementi con uno strumento. Ad esempio, un componente con un set fisso di porte. Eseguire l'override del metodo di inizializzazione della casella degli strumenti in ToolboxHelper.cs. Creare un prototipo EGP (Element Group Prototype) contenente gli elementi e i relativi collegamenti di relazione. Vedere Personalizzazione degli strumenti e della casella degli strumenti.

Includere le forme principali e le forme della porta nell'EGP oppure definire le BoundsRules per posizionare le forme della porta quando l'istanza di EGP viene creata.
Usare uno strumento di connessione per instanziare diversi tipi di relazione. Aggiungere le direttive Link Connect (LCD) al Generatore di Connessione richiamato dallo strumento. I LCD determinano il tipo della relazione dai tipi dei due elementi. Per farlo dipendere dagli stati degli elementi, è possibile aggiungere codice personalizzato. Vedere Personalizzazione degli strumenti e della casella degli strumenti.
Strumenti permanenti: l'utente può fare doppio clic su qualsiasi strumento per creare molte forme o connettori in successione. In Esplora DSL selezionare il Editor nodo. Nella finestra Proprietà, imposta Utilizza elementi della casella degli strumenti adesivi.
Definire i comandi di menu Vedere Procedura: Modificare un comando di menu standard
Vincolare il modello con le regole di convalida Vedere Convalida in un linguaggio specifico del dominio
Generare codice, file di configurazione o documenti da un linguaggio DSL. Generazione di codice da un linguaggio di Domain-Specific
Personalizzare la modalità di salvataggio dei modelli nel file. Vedere Personalizzazione dell'archiviazione file e della serializzazione XML
Salvare i modelli in database o in altri supporti. Eseguire l'override di YourLanguageDocData

Vedere Personalizzazione dell'archiviazione file e della serializzazione XML
Integrare diversi DSLS in modo che funzionino come parte di un'applicazione. Vedere Integrazione di modelli con Visual Studio Modelbus.
Consentire l'estensione DSL da parte di terze parti e controllare l'estensione. Estendi il tuo DSL usando MEF

Condivisione di classi tra DSL tramite una libreria DSL

Definizione di un criterio di blocco per la creazione di segmenti Read-Only

Annotazioni

Il componente Trasformazione modello di testo viene installato automaticamente come parte del carico di lavoro di sviluppo di estensioni per Visual Studio. È anche possibile installarlo dalla scheda Singoli componenti del programma di installazione di Visual Studio, nella categoria SDK, librerie e framework . Installare il componente Modeling SDK dalla scheda Singoli componenti .