Condividi tramite


Procedura: definire un linguaggio specifico di dominio

Per definire un linguaggio specifico (DSL) di dominio, creare un oggetto Visual Studio soluzione da un modello.La parte principale della soluzione è il diagramma della definizione di modello DSL, archiviato in DslDefinition.dsl.La definizione di modello DSL definisce le classi e le forme del linguaggio DSL.Dopo aver modificato e aggiunta a questi elementi, è possibile aggiungere il codice programma per personalizzare in dettaglio il modello DSL.

Se non si ha familiarità con DSLs, si consiglia di utilizzare DSL Tools Lab, disponibile nel sito: SDK modellare e di Visualizaton

In questo argomento

Selezionare una soluzione del modello

Modelli per la definizione del modello DSL

Classi di elemento del modello

Forme del diagramma

riferimenti e connettori

Forme che contiene gli elenchi: Forme di raggruppamento

Porte sul limite di un'altra forma

Corsie

Tipi di proprietà

Personalizzare il modello DSL

Risoluzione dei problemi

Selezionare una soluzione del modello

Per definire un modello DSL, è necessario installare i componenti seguenti:

Visual Studio

https://go.microsoft.com/fwlink/?LinkId=185579

Visual Studio SDK

https://go.microsoft.com/fwlink/?LinkId=185580

L'sdk di visualizzazione e modellazione di Visual Studio

https://go.microsoft.com/fwlink/?LinkID=186128

Per creare un nuovo linguaggio specifico di dominio, si crea un nuovo Visual Studio soluzione utilizzando il modello di progetto del linguaggio specifico di dominio.

Per creare una soluzione DSL

  1. creare una soluzione con linguaggio specifico di dominio modello, disponibile in Altri tipi di progetto/estensibilità in nuovo progetto finestra di dialogo.

    Finestra di dialogo per la creazione di una soluzione DSL

    Quando si fa clic su Scegliere OK, Procedura guidata del linguaggio specifico di dominio verrà aperto e verrà visualizzato un elenco delle soluzioni DSL del modello.

  2. Fare clic su ogni modello per visualizzare una descrizione.Scegliere la soluzione simile maggiormente a quanto si desidera creare.

    Ogni modello DSL definisce un funzionamento di base DSL.È possibile modificare questo modello DSL per adattare per contenere i requisiti.

    Fare clic su ogni esempio per ulteriori informazioni.

    • selezionato flusso di attività per creare un modello DSL che ha corsie.Corsie è partizioni verticale o orizzontale del diagramma.

    • selezionato modelli componenti per creare un modello DSL che ha porte.le porte sono piccole forme sull'orlo di più grande forma.

    • selezionato diagrammi classi per definire un modello DSL con forme di raggruppamento.Le forme di raggruppamento contengono elenchi di elementi.

    • selezionato linguaggio minimo in altri casi, o se non si è sicuri.

      [!NOTA]

      Se si desidera creare il diagramma o i diagrammi dei componenti della classe, considerare l'utilizzo di modelli UML.Gli strumenti di modellazione UML forniscono un insieme di diagrammi integrati intorno a un singolo modello.Sono estendibili e possono essere integrati con il modello DSL utilizzando ModelBus.Per ulteriori informazioni, vedere Sviluppo di modelli per la progettazione software.

    • selezionato finestra di progettazione minima di Winform o progettazione WPF minima per creare un modello DSL visualizzati in una superficie WPF o Windows Form.Sarà necessario scrivere il codice per definire editor.Per ulteriori informazioni, vedere i seguenti argomenti:

      Creazione di un linguaggio specifico di dominio basato su Windows Form

      Creazione di un linguaggio specifico di dominio basato su WPF

  3. Fornire un'estensione di file per il modello DSL nella pagina appropriata della procedura guidata.Si tratta di estensione che i file che contengono le istanze del linguaggio DSL utilizzeranno.

    • Scegliere un'estensione di file che non è associata ad alcuna applicazione nel computer, o in qualsiasi computer in cui si desidera installare il modello DSL.Ad esempio, docx e htm essere estensioni di file inaccettabili.

    • La procedura guidata per la seconda se l'estensione immessa viene utilizzata come modello DSL.Considerare l'utilizzo di un'estensione di file diversa.È inoltre possibile reimpostare istanza sperimentale di Visual Studio SDK per cancellare le finestre di progettazione controversi anziane.Fare clic su inizio, quindi Tutti i programmi, Microsoft Visual Studio 2010 SDK, strumentiquindi Reimpostare istanza sperimentale di Microsoft Visual Studio 2010.

  4. È possibile o modificare le impostazioni nelle altre pagine, oppure mantenere i valori predefiniti.

  5. Fare clic su Fine.

    Verrà creata una soluzione contenente due o tre progetti e viene generato il codice dalla definizione di modello DSL.

L'interfaccia utente è ora simile all'immagine seguente.

Progettazione DSL

Questa soluzione definisce un linguaggio specifico di dominio.Per ulteriori informazioni, vedere Informazioni sull'interfaccia utente degli strumenti di linguaggio specifico di dominio.

Bb126581.collapse_all(it-it,VS.110).gifPer verificare la soluzione

La soluzione del modello fornisce un computer DSL, che è possibile modificare o utilizzare come è.

Per testare la soluzione, premere F5 o il CTRL+F5.una nuova istanza di Visual Studio viene aperto in modalità sperimentale.

Nella nuova istanza di Visual Studio, in Esplora Risorse, aprire il file di esempio.Verrà aperto come diagramma, con una casella degli strumenti.

Se si esegue una soluzione creata da linguaggio minimo modello, lo sperimentale Visual Studio sarà simile al seguente:

Bb126581.DSL_min(it-it,VS.110).png

Provare gli strumenti.Creare elementi e connetterli.

Chiudere l'istanza sperimentale di Visual Studio.

[!NOTA]

Una volta modificato il modello DSL, non sarà più possibile vedere le forme nel file di test di esempio.Tuttavia, sarà possibile creare nuovi elementi.

Bb126581.collapse_all(it-it,VS.110).gifmodificare il modello DSL

Rinominare e mantenere alcune o tutte le classi di dominio e classi shape nella definizione di IL modello.I nuovi nomi della classe devono essere nomi validi di CLR, senza spazi o punteggiatura.

È particolarmente utile mantenere queste classi:

  • La classe radice viene visualizzato nella classe in alto a sinistra del diagramma della definizione di modello DSL, in classi e relazioni.Rinominarlo a un nome diverso dal modello DSL.Ad esempio, un MusicLibrary denominato DSL può avere una classe radice denominata Music.

  • La classe del diagramma viene visualizzato a destra inferiore del diagramma della definizione di modello DSL, in Elementi del diagramma colonna.Potrebbe essere necessario scorrere verso destra per visualizzarla.in genere è denominato TheDsldiagramma.

  • Se è stato utilizzato flusso di attività il modello e si desidera creare diagrammi con corsie, per mantenere e rinominare la classe di dominio dell'attore e la forma di ActorSwimlane.

Eliminare o rinominare le altre classi per soddisfare le esigenze.

Modelli per la definizione del modello DSL

Si consiglia di sviluppare un modello DSL aggiungendo o modificando una o due funzionalità per volta.Aggiungere una funzionalità, eseguire il modello DSL e testarlo quindi aggiungere una o due nuove funzionalità.Una tipica funzionalità del linguaggio DSL potrebbe essere:

  • Una classe di dominio, la relazione includendo che collega l'elemento al modello, la forma richiesta agli elementi in visualizzazione di tale classe nel diagramma e allo strumento dell'elemento che consente agli utenti di creare elementi.

  • Le proprietà del dominio di una classe di dominio e degli elementi Decorator che li visualizza in una forma.

  • Una relazione di riferimento e il connettore visualizzato nel diagramma e sullo strumento del connettore che consente agli utenti di creare collegamenti.

  • Una personalizzazione che richiede codice di programma, ad esempio un vincolo di convalida o un comando di menu.

Nelle sezioni seguenti viene descritto come creare i tipi più utili con funzionalità DSL.Esistono molti altri modelli con cui un modello DSL è possibile creare, ma questi sono i più frequentemente utilizzati.

[!NOTA]

Dopo aver aggiunto una funzionalità, non dimenticare di fare clic su Trasformazione di tutti i modelli nella barra degli strumenti di Esplora soluzioni prima di compilare ed eseguendo il modello DSL.

Nella figura seguente vengono illustrate le classi e la parte di relazioni di DSL che viene utilizzato come esempio in questo argomento.

Relazioni di incorporamento e riferimento

Nella figura seguente è un modello di esempio di questo modello DSL:

Modello di istanza generato di DSL

[!NOTA]

“Modello„ fa riferimento a un'istanza del modello DSL che gli utenti creano e in genere visualizzato come diagramma.In questo argomento viene indicato il diagramma della definizione di modello DSL che i diagrammi di modellazione visualizzati quando il modello DSL è utilizzato.

Definizione delle classi di dominio

Le classi di dominio rappresentano i concetti del linguaggio DSL.le istanze sono elementi del modello.Ad esempio in un MusicLibrary DSL è possibile avere classi di dominio denominate Album e brano.

Per creare una classe di dominio, è possibile trascinare da classe di dominio denominata lo strumento al diagramma e scegliere rinomina la classe.

Per ulteriori informazioni, vedere Proprietà delle classi di dominio.

Bb126581.collapse_all(it-it,VS.110).gifCreare una relazione che utilizza per ogni classe di dominio

Ogni classe di dominio a meno che la classe radice deve essere il database di destinazione di almeno una relazione che utilizza, o ereditare da una classe che rappresenta la destinazione di una relazione che utilizza.

In un modello, ogni elemento del modello è un nodo in una singola struttura ad albero di incorporare le relazioni.L'origine e la destinazione di una relazione che utilizza fanno riferimento a frequenza del padre e figlio.

La selezione di un elemento padre per una classe di dominio dipende da come si desidera che le durate degli elementi in modo che dipendano da altri elementi.Se un nodo di una struttura ad albero viene eliminato, il relativo sottostruttura ad albero in genere eliminato anche.Le classi di elementi che dispongono di un oggetto esistente indipendente pertanto sono incorporate direttamente nella classe radice.

In genere, se visualizzare un elemento a un altro elemento, si desidera indicare una relazione proprietario.In tal caso, la maggior parte classe padre appropriata è la classe del contenitore.L'eccezione è quando l'elemento visualizzato in un contenitore è in realtà un collegamento di riferimento a un elemento in modo indipendente.In tal caso, eliminando il contenitore elimina il riferimento ma non il database di destinazione.

Nei modelli della definizione di modello DSL descritti in questo argomento, presupporremo che gli elementi visualizzati in un contenitore verranno eliminati quando il contenitore viene eliminato.Le combinazioni più complesse possibili e possono essere eseguiti definendo le regole.

Come l'elemento viene visualizzato

Classe (includendo) padre

Esempio nel modello di soluzione DSL

Forma sul diagramma.

Corsia.

Classe radice DSL.

linguaggio minimo.

flusso di attività: Classe dell'attore.

Forma in corsia.

Classe di dominio di elementi visualizzati come corsie.

flusso di attività: classe di attività.

Elemento elenco in formato, dove l'elemento viene eliminato se il contenitore viene eliminato.

Porta sul bordo della forma.

Classe di dominio che viene eseguito il mapping alla forma del contenitore.

diagramma classi: classe Attribute.

Diagramma dei componenti: Classe della porta.

Elemento nell'elenco, non eliminato se il contenitore viene eliminato.

Classe radice DSL.

I collegamenti dei riferimenti alle visualizzazioni list.

Non direttamente visualizzare.

La classe che costituisce la parte.

Nell'esempio della raccolta di audio, album vengono visualizzati come rettangoli in cui i titoli delle canzoni sono elencati.Pertanto il padre dell'album è la musica della classe radice e il padre di brano è album.

Per creare una classe di dominio e il relativo incorporare contemporaneamente, fare clic su incorporare relazione lo strumento, quindi la classe padre e quindi fa clic su una parte vuota del diagramma.

Non è di solito necessario modificare il nome della relazione che utilizza e dei relativi ruoli, perché tenere traccia dei nomi di classe automaticamente.

Per ulteriori informazioni, vedere Proprietà delle relazioni di dominio e Proprietà dei ruoli di dominio.

[!NOTA]

L'incorporamento non è lo stesso di ereditarietà.Gli elementi figlio in una relazione l'inserimento non ereditano le funzionalità dagli elementi padre.

Bb126581.collapse_all(it-it,VS.110).gifAggiungere le proprietà di dominio a ogni classe di dominio

Memorizzati valori delle proprietà del dominio.gli esempi sono: Nome, titolo, la data di pubblicazione.

Fare clic su Proprietà del dominio nella classe, premere il tasto INVIO quindi digitare il nome di una proprietà.Il tipo predefinito della proprietà del dominio è string.Se si desidera modificare il tipo, selezionare la proprietà del dominio e impostare tipo in proprietà finestra.Se il tipo desiderato non è presente nell'elenco a discesa, vedere Tipi di aggiunta di proprietà.

Impostare la proprietà name dell'elemento. Selezionare una proprietà di dominio che può essere utilizzata per identificare gli elementi nell'esploratore del linguaggio.Ad esempio, nella classe di dominio di brano che è possibile selezionare la proprietà del dominio del titolo.in proprietà finestra, impostare È il nome dell'elemento in true.

Bb126581.collapse_all(it-it,VS.110).gifCreare classi di dominio derivate

Se si desidera una classe di dominio per essere variant che ereditano le relative proprietà e relazioni, creare classi che derivano da.Ad esempio, l'album potrebbe avere classi derivate WMA e MP3.

Creare una classe derivata utilizzando il classe di dominio strumento.

Fare clic su ereditarietà lo strumento, fare clic sulla classe derivata quindi fare clic sulla classe di base.

Si consideri la possibilità di impostare modificatore di ereditarietà la classe di base estrarre.Se si ritiene che sarà sono necessarie le istanze della classe base, studiate la capacità anziché creare una classe derivata distinta corrispondente.

Le classi derivate ereditano le proprietà e i ruoli delle relative classi base.

Bb126581.collapse_all(it-it,VS.110).gifPer riordinare il diagramma della definizione di modello DSL

Quando si aggiunge le relazioni, alcune classi verranno visualizzati in più punti.Per ridurre il numero degli aspetti e visualizzare il diagramma più ampio, fare clic con il pulsante destro del mouse sulla classe di destinazione di relazione quindi fare clic su Aggiornare la struttura ad albero di seguito.Per ottenere l'effetto opposto, fare clic con il pulsante destro del mouse sulla classe di destinazione di relazione e fare clic su Suddividere la struttura ad albero.Se non viene visualizzato questi comandi di menu, assicurarsi che solo la classe di dominio sia selezionata.

Utilizzare CTRL+freccia SU e CTRL+freccia GIÙ per spostare le classi di dominio e le classi shape.

Bb126581.collapse_all(it-it,VS.110).gifverificare le classi di dominio

Per verificare le nuove classi di dominio

  1. Trasformazione di selezionare tutti i modelli nella barra degli strumenti di Esplora soluzioni, generare il codice di progettazione DSL.È possibile automatizzare questo passaggio.Per ulteriori informazioni, vedere Procedura: automatizzare la trasformazione di tutti i modelli.

  2. Compilare ed eseguire il modello DSL. premere F5 o CTRL+F5 per eseguire una nuova istanza di Visual Studio in modalità sperimentale.Nell'istanza sperimentale di Visual Studio, aprire o creare un file con estensione di file del modello DSL.

  3. Aprire Esplora Risorse. Sul lato del diagramma è la finestra di esplorazione del linguaggio, che in genere è denominata TheLanguage Esplora risorse.Se non viene visualizzata questa finestra, potrebbe trovarsi in una scheda al di sotto di Esplora soluzioni.Se non è disponibile, scegliere visualizzazione menu, quindi altre finestrequindi scegliere TheLanguageEsplora risorse.

    In esplora modelli scegliere da presenta una visualizzazione struttura ad albero del modello.

  4. Creare nuovi elementi. Fare clic con il pulsante destro del mouse sul nodo radice all'inizio e quindi fare clic su Aggiungere un nuovoLa classe.

    Una nuova istanza della classe viene visualizzata in Esplora Risorse.

  5. Verificare che ogni istanza disponga di un nome diverso quando si creano nuove istanze.Ciò si verifica solo se sono state impostate È il nome dell'elemento flag in una proprietà del dominio.

  6. Esaminare le proprietà del dominio. Con un'istanza della classe selezionata, controllano la Finestra Proprietà.Deve mostrare i valori alle proprietà del dominio tali definito nella classe di dominio.

  7. salvare il file, chiuderlo e riaprirlo.Tutte le istanze create devono essere visibili nell'esploratore, dopo aver espandere i nodi.

Definizione delle forme del diagramma

È possibile definire classi di elementi visualizzati su un diagramma come rettangoli, ellissi, o icone.

Per definire una classe di elementi visualizzati come forme su un diagramma

  1. definire e verificare una classe di dominio come descritto in Definizione delle classi di dominio**.**

    • Il padre della classe deve essere la classe radice.Ovvero deve essere disponibile una relazione che utilizza tra la classe radice e la nuova classe di dominio.

    • Se il diagramma sia corsie, il padre può essere la classe di dominio mappata a uno corsia.Prima di procedere con questa procedura, vedere Definendo un modello DSL che ha Corsie.

  2. Aggiungere una classe di forme per rappresentare gli elementi del diagramma di modello.Trascinare da uno dei seguenti strumenti nel diagramma di definizione DSL:

    • Forma della geometria fornisce un rettangolo o un'ellisse.

    • Formato di immagine visualizzare un'immagine fornito.

    • Forma di raggruppamento è un rettangolo contenente uno o più elenchi di elementi.

    Rinominare la classe di forma, che verrà visualizzato a destra del diagramma della definizione di modello DSL, nelle forme e i connettori.

  3. Definire un'immagine, se è stata creata una forma di immagine.

    1. Creare un file di immagine di qualsiasi dimensione.I formati BMP, JPEG, GIF e EMF sono supportati.

    2. In Esplora soluzioni, aggiungere il file alla soluzione in Dsl \Resources.

    3. Tornare al diagramma della definizione di modello DSL e selezionare la nuova classe di forma di immagine.

    4. Nella Finestra Proprietà, fare clic su immagine proprietà.

    5. in immagine selezionata la finestra di dialogo, fare clic sul menu a discesa in nome filee selezionare l'immagine.

  4. Aggiungere gli elementi Decorator di testo alla forma, per visualizzare le proprietà del dominio.

    Per visualizzare il nome o il titolo dell'elemento del modello, saranno probabilmente necessari almeno un elemento Decorator di testo.

    Fare clic con il pulsante destro del mouse sull'intestazione della classe di formato, quindi aggiungerequindi scegliere Il testo all'elemento Decorator.Impostare il nome dell'elemento Decorator e nella Finestra Proprietà impostare la proprietà posizionare.

  5. Connettere ogni forma con un mapping dell'elemento del diagramma nella classe di dominio che deve essere visualizzata.

    Fare clic su Mapping dell'elemento del diagramma lo strumento, quindi fare clic sulla classe di dominio, quindi fare clic sulla classe della forma.

  6. Eseguire il mapping delle proprietà agli elementi Decorator di testo.

    1. Selezionare la riga grigia tra la classe di dominio e la classe di forma che rappresenta il mapping dell'elemento del diagramma.

    2. in Dettagli DSL la finestra, fare clic su Mapping dell'elemento Decorator scheda.Se non viene visualizzato Dettagli DSL finestra, scegliere visualizzazione menu, quindi altre finestre quindi scegliere Dettagli DSL.È necessario frequentemente da generare la parte superiore della finestra per visualizzare tutto il contenuto.

    3. selezionare il nome di un elemento Decorator.In Proprietà di, selezionare il nome di una proprietà della classe di dominio.Ripetere questo passaggio per ogni elemento Decorator.

      Se si desidera visualizzare una proprietà di un elemento correlato, fare clic sullo strumento di spostamento a discesa della struttura ad albero in Percorso per visualizzare proprietà.

    4. Assicurarsi che un segno di spunta venga visualizzato accanto a ogni nome dell'elemento Decorator.

    Finestra Dettagli DSL e Mapping forme

  7. Preparare un elemento della casella degli strumenti per creare elementi della classe di dominio.

    1. in DSL Esplora Risorseespandere, editor nodo e tutti i relativi sottomarino-nodi.

    2. Fare clic con il pulsante destro del mouse sul nodo sotto Schede della casella degli strumenti che ha lo stesso nome del modello DSL, ad esempio MusicLibrary.Fare clic su Aggiungere lo strumento dell'elemento.

      [!NOTA]

      Facendo clic con il pulsante destro del mouse strumenti nodo, non verranno Aggiungere lo strumento dell'elemento.Al contrario, fare clic sul nodo.

    3. Nella Finestra Proprietà con il nuovo strumento dell'elemento selezionato, set classe alla classe di dominio recentemente aggiunto.

    4. set Barra del titolo e Descrizione comandi.

    5. set L'icona casella degli strumenti a un'icona che verrà visualizzato nella casella degli strumenti.È possibile impostarlo in una nuova icona o a un'icona già utilizzato per un altro strumento.

      Per creare una nuova icona, aprire il Dsl \Resources in Esplora soluzioni.Copiare e incollare una dei file esistenti dello strumento BMP dell'elemento.Rinominare la copia incollata quindi fare doppio clic su per modificarlo.

      Tornare al diagramma della definizione di modello DSL, selezionare lo strumento e nella Finestra Proprietà fare clic su [...] in L'icona casella degli strumenti.in selezionare la bitmap la finestra di dialogo, selezionare il file di .BMP dal menu a discesa.

Per ulteriori informazioni, vedere Proprietà delle forme geometriche e Proprietà delle forme d'immagine.

Per testare le forme

  1. Trasformazione di selezionare tutti i modelli nella barra degli strumenti di Esplora soluzioni, generare il codice di progettazione DSL.

  2. Compilare ed eseguire il modello DSL. premere F5 o CTRL+F5 per eseguire una nuova istanza di Visual Studio in modalità sperimentale.Nell'istanza sperimentale di Visual Studio, aprire o creare un file con estensione di file del modello DSL.

  3. Verificare che gli strumenti dell'elemento vengano visualizzati nella casella degli strumenti.

  4. Creare forme trascinandoli da uno strumento nel diagramma di modello.

  5. Verificare che ogni elemento Decorator del testo venga visualizzato, e che:

    1. È possibile modificarlo, a meno che non sia stata impostata è l'interfaccia utente di sola lettura flag della proprietà del dominio.

    2. Quando si modifica la proprietà nella Finestra Proprietà o nell'elemento Decorator, l'altro visualizzazione viene aggiornata.

Dopo aver innanzitutto la verifica di una forma, potrebbe essere necessario modificare le proprietà e per aggiungere un certo numero maggiore di funzionalità avanzate.Per ulteriori informazioni, vedere Personalizzazione ed estensione di un linguaggio specifico di dominio.

Definizione di relazioni di riferimento

È possibile definire una relazione di riferimento tra le classi di dominio di origine e uno di destinazione la classe di dominio.Le relazioni di riferimento in genere visualizzato in un diagramma come connettori, ovvero righe tra le forme.

Ad esempio, se gli album di musica e gli artisti visualizzati come forme del diagramma, è possibile definire una relazione denominata ArtistsAppearedOnAlbums che collega gli artisti agli album in cui hanno lavorato.Vedere l'esempio nella figura.

Modello di istanza generato di DSL

Le relazioni di riferimento possono inoltre utilizzare gli elementi di collegamento dello stesso tipo.Ad esempio, in un modello DSL che rappresenta una struttura ad albero genealogico, la relazione tra elementi padre e i relativi elementi figlio è una relazione di riferimento dai dipendenti.

Bb126581.collapse_all(it-it,VS.110).gifdefinire una relazione di riferimento

Fare clic sullo strumento di riferimento di relazione, quindi fare clic sulla classe di dominio di origine della relazione e scegliere la classe di dominio di destinazione.La classe di destinazione può corrispondere alla classe di origine.

Ogni rapporto presenta due ruoli, rappresentati dalla riga su ciascun lato della casella della relazione.È possibile selezionare ogni ruolo e impostarne le proprietà nella Finestra Proprietà.

Considerare la possibilità di rinominare i ruoli.Ad esempio, una relazione tra la persona e persona, è possibile modificare i nomi predefiniti a padre e figlio, amministratore e subalterni, maestro e studente, e così via.

regolare le molteplicità di ogni ruolo, se necessario.Se si desidera che ogni persona per contenere al massimo un amministratore, impostare la molteplicità visualizzato sotto l'etichetta amministratore nel diagramma di 0..1.

Aggiungere le proprietà di dominio alla relazione. Nella figura, la relazione dell'Artista-Album dispone di una proprietà del ruolo.

impostareConsente i duplicatiproprietà della relazione, se più di un collegamento della stessa classe può esistere tra la stessa coppia di elementi del modello.Ad esempio, è possibile consentire a un maestro insegni a più di uno conforme allo stesso studente.

Mappe di forme per connettori

Per ulteriori informazioni, vedere Proprietà delle relazioni di dominio e Proprietà dei ruoli di dominio.

Bb126581.collapse_all(it-it,VS.110).gifDefinire un connettore per visualizzare la relazione

Un connettore viene visualizzata una linea tra due forme del diagramma di modello.

trascinare connettore strumento nel diagramma di definizione DSL.

Aggiungere gli elementi Decorator di testo se si desidera visualizzare le etichette del connettore.Impostare le relative posizioni.Per consentire all'utente di spostare un elemento Decorator di testo, impostarne è mobile proprietà.

utilizzare Mapping dell'elemento del diagramma strumento per collegare il connettore alla relazione di riferimento.

Con il mapping dell'elemento del diagramma selezionato, aprire Dettagli DSL la finestra e apre Mapping dell'elemento Decorator scheda.

Selezionare ognuna elemento Decorator e set Proprietà di la proprietà corretta del dominio.

Assicurarsi che un segno di spunta venga visualizzato accanto a ogni elemento in elementi Decorator elenco.

Bb126581.collapse_all(it-it,VS.110).gifDefinire uno strumento generatore di connessione

in DSL Esplora Risorse la finestra, espandere editor nodo e tutti i relativi sottonodi.

Fare clic con il pulsante destro del mouse sul nodo con lo stesso nome del modello DSL e quindi fare clic su Aggiungere il nuovo strumento di connessione.

Mentre il nuovo strumento è selezionato, nella Finestra Proprietà:

  • impostare Barra del titolo e Descrizione comandi.

  • Fare clic su Generatore di connessione e selezionare il generatore appropriato per la nuova relazione.

  • set L'icona casella degli strumenti icona che si desidera visualizzare nella casella degli strumenti.È possibile impostarlo in una nuova icona o a un'icona già utilizzato per un altro strumento.

    Per creare una nuova icona, aprire il Dsl \Resources in Esplora soluzioni.Copiare e incollare una dei file esistenti dello strumento BMP dell'elemento.Rinominare la copia incollata quindi fare doppio clic su per modificarlo.

    Tornare al diagramma della definizione di modello DSL, selezionare lo strumento e nella Finestra Proprietà fare clic su [...] in L'icona casella degli strumenti.in selezionare la bitmap la finestra di dialogo, selezionare il file di .BMP dal menu a discesa.

Per eseguire il test di una relazione e un connettore di riferimento

  1. Trasformazione di selezionare tutti i modelli nella barra degli strumenti di Esplora soluzioni, generare il codice di progettazione DSL.

  2. Compilare ed eseguire il modello DSL. premere F5 o CTRL+F5 per eseguire una nuova istanza di Visual Studio in modalità sperimentale.Nell'istanza sperimentale di Visual Studio, aprire o creare un file con estensione di file del modello DSL.

  3. Verificare che lo strumento di connessione venga visualizzato nella casella degli strumenti.

  4. Creare forme trascinandoli da uno strumento nel diagramma di modello.

  5. Creare connessioni tra le forme.Fare clic sullo strumento del connettore, fare clic su una forma quindi fare clic su un'altra forma.

  6. Verificare l'impossibilità di creare connessioni tra le classi inopportune. Ad esempio, se la relazione tra gli album e gli artisti, verificare che non sia possibile collegare gli artisti agli artisti.

  7. Verificare che le molteplicità siano corrette. Ad esempio, verificare che non sia possibile connettere una persona a un amministratore.

  8. Verificare che ogni elemento Decorator del testo venga visualizzato, e che:

    1. È possibile modificarlo, a meno che non sia stata impostata è l'interfaccia utente di sola lettura flag della proprietà del dominio.

    2. Quando si modifica la proprietà nella Finestra Proprietà o nell'elemento Decorator, l'altro visualizzazione viene aggiornata.

Dopo aver innanzitutto testato un connettore, potrebbe essere necessario modificare le proprietà e per aggiungere un certo numero maggiore di funzionalità avanzate.Per ulteriori informazioni, vedere Personalizzazione ed estensione di un linguaggio specifico di dominio.

definendo le forme che contengono gli elenchi: Forme di raggruppamento

Una forma di raggruppamento contiene uno o più elenchi di elementi.Ad esempio, in una raccolta di musica DSL, è possibile utilizzare le forme di raggruppamento per rappresentare gli album di musica.In ogni album, esiste un elenco delle canzoni.

Forma Raggruppamento

Nel metodo più semplice per raggiungere di questo effetto in una definizione di modello DSL, definire una classe di dominio per il contenitore e una classe di dominio per ogni elenco.La classe dei contenitori viene eseguito il mapping alla forma del raggruppamento.

Mappa di forme

Per ulteriori informazioni, vedere Proprietà delle forme di raggruppamento.

Per definire una forma di raggruppamento

  1. Per creare la classe di dominio del contenitore.Fare clic su incorporare relazione lo strumento, fare clic sulla classe radice del modello e fare clic su una parte vuota del diagramma della definizione di modello DSL.In questo modo viene creata la classe di dominio denominata Album nella figura di seguito.

    In alternativa anziché incorporare nella classe radice, è possibile incorporare il contenitore in una classe di dominio mappata a uno corsia.

    Aggiungere una proprietà di dominio come nome della classe e impostarne È il nome dell'elemento flag nella Finestra Proprietà.

  2. Per creare la classe di dominio elemento elenco.Fare clic su incorporare relazione lo strumento, scegliere la classe dei contenitori (album) e quindi fare clic su una parte vuota del diagramma.In questo modo viene creata la classe di dominio denominata Song nella figura di seguito.

    Aggiungere una proprietà di dominio come titolo alla classe e impostarne È il nome dell'elemento flag.

    Aggiungere altre proprietà del dominio.

    Aggiungere un'altra classe di dominio elemento elenco per ogni elenco che si desidera visualizzare.

  3. Per combinare più tipi di elementi nell'elenco, creare classi che ereditano dalla classe dell'elenco.Fare l'elenco classe astratte impostando il relativo modificatore di ereditarietà.

    Ad esempio, se si desidera che la musica classica da ordinare dal compositore anziché dell'artista, è possibile creare due sottoclassi di brano, di ClassicalSong e di NonClassicalSong.

  4. Creare una forma di raggruppamento.Trascinare dal Forma di raggruppamento strumento nel diagramma di definizione DSL.

    Aggiungere un elemento Decorator di testo e impostarne il nome.

    Aggiungere un raggruppamento e impostarne il nome.

  5. Per consentire all'utente per nascondere i raggruppamenti dell'elenco, fare clic con il pulsante destro del mouse sulla classe di forma di raggruppamento, quindi aggiungerequindi scegliere Espandere/elemento Decorator di compressione.Nella Finestra Proprietà, impostare la posizione dell'elemento Decorator.

  6. Fare clic su Mapping dell'elemento del diagramma lo strumento, scegliere la classe di dominio del contenitore quindi fare clic sulla forma del raggruppamento.

  7. Selezionare il collegamento del mapping dell'elemento del diagramma tra la classe di dominio e il formato.in Dettagli DSL finestra:

    1. Fare clic su elementi Decorator scheda.Fare clic sul nome dell'elemento Decorator quindi selezionare l'elemento appropriato in Visualizza la proprietà.Assicurarsi che un segno di spunta venga visualizzata accanto al nome dell'elemento Decorator.

    2. Fare clic su Mapping del raggruppamento scheda.

      Fare clic sul nome del raggruppamento.

      In Percorso della raccolta degli elementi visualizzati, passare alla classe dell'elemento di elenco (brano).Fare clic sulla freccia a discesa per utilizzare lo strumento lo strumento di spostamento.

      In Proprietà diselezionare la proprietà, che deve essere visualizzato nell'elenco.Nell'esempio, questo è il titolo.

[!NOTA]

Tramite i campi del percorso campi dell'elemento Decorator il mapping di mapping e il raggruppamento, è possibile creare relazioni più complesse tra le classi di dominio e la forma del raggruppamento.

Per definire uno strumento per creare una forma

  1. Preparare un elemento della casella degli strumenti per creare elementi della classe di dominio.

  2. in DSL Esplora Risorseespandere, editor nodo e tutti i relativi sottomarino-nodi.

  3. Fare clic con il pulsante destro del mouse sul nodo sotto Schede della casella degli strumenti che ha lo stesso nome del modello DSL, ad esempio MusicLibrary.Fare clic su Aggiungere lo strumento dell'elemento.

    [!NOTA]

    Facendo clic con il pulsante destro del mouse strumenti nodo, non verranno Aggiungere lo strumento dell'elemento.Al contrario, fare clic sul nodo.

  4. Nella Finestra Proprietà con il nuovo strumento dell'elemento selezionato, set classe alla classe di dominio recentemente aggiunto.

  5. set Barra del titolo e Descrizione comandi.

  6. set L'icona casella degli strumenti a un'icona che verrà visualizzato nella casella degli strumenti.È possibile impostarlo in una nuova icona o a un'icona già utilizzato per un altro strumento.

    Per creare una nuova icona, aprire il Dsl \Resources in Esplora soluzioni.Copiare e incollare una dei file esistenti dello strumento .BMP dell'elemento.Rinominare la copia incollata quindi fare doppio clic su per modificarlo.

    Tornare al diagramma della definizione di modello DSL, selezionare lo strumento e nella Finestra Proprietà fare clic su [...] in L'icona casella degli strumenti.in selezionare la bitmap la finestra di dialogo, selezionare il file BMP dal menu a discesa.

Per testare una forma di raggruppamento

  1. Trasformazione di selezionare tutti i modelli nella barra degli strumenti di Esplora soluzioni, generare il codice di progettazione DSL.

  2. Compilare ed eseguire il modello DSL. premere F5 o CTRL+F5 per eseguire una nuova istanza di Visual Studio in modalità sperimentale.Nell'istanza sperimentale di Visual Studio, aprire o creare un file con estensione di file del modello DSL.

  3. Verificare che lo strumento venga visualizzato nella casella degli strumenti.

  4. Trascinare lo strumento nel diagramma di modello.Una forma viene creata.

    Verificare che il nome dell'elemento e sia impostato automaticamente su un valore predefinito.

  5. Fare clic con il pulsante destro del mouse sull'intestazione della nuova forma quindi fare clic su aggiungi L'elemento elenco. Nell'esempio, il comando viene aggiunto il brano.

    Verificare che un elemento venga visualizzato in con un nuovo nome.

  6. Fare clic su uno degli elementi di elenco e quindi esaminare la Finestra Proprietà.Verranno visualizzate le proprietà degli elementi dell'elenco.

  7. Aprire il linguaggio Esplora Risorse.Verificare di poter visualizzare i nodi del contenitore con i nodi dell'elemento di elenco in.

Finestra di esplorazione generata di DSL

Dopo aver innanzitutto la verifica di una forma di raggruppamento, potrebbe essere necessario modificare le proprietà e per aggiungere un certo numero maggiore di funzionalità avanzate.Per ulteriori informazioni, vedere Personalizzazione ed estensione di un linguaggio specifico di dominio.

Bb126581.collapse_all(it-it,VS.110).gifVisualizzare il collegamento di riferimento in un raggruppamento

In genere, un elemento visualizzato in un raggruppamento è un elemento figlio di rappresentata dalla forma di raggruppamento.Talvolta, si desidererà visualizzare un elemento collegato a con una relazione di riferimento.

Ad esempio, è possibile aggiungere un secondo raggruppamento a AlbumShape che visualizza un elenco artisti collegati all'album.

In questo caso, il raggruppamento dovrebbe visualizzare il collegamento, anziché l'elemento a cui si fa riferimento.Questo perché quando l'utente seleziona l'elemento nel raggruppamento e in DELETE di stampa, si desidera un collegamento da eliminare, non l'elemento a cui si fa riferimento.

Tuttavia, è possibile fare in modo che il nome dell'elemento a cui si fa riferimento nel raggruppamento.

La procedura riportata di seguito si presuppone che sia già stata creata la classe di dominio, la relazione di riferimento, la forma del raggruppamento e il mapping dell'elemento del diagramma, come descritto precedentemente in questa sezione.

Per visualizzare un collegamento di riferimento in un raggruppamento

  1. Aggiungere un raggruppamento della forma del raggruppamento.Nel diagramma della definizione di modello DSL, fare clic con il pulsante destro del mouse sulla classe di forma di raggruppamento, quindi aggiungerequindi scegliere raggruppamento.

  2. set Percorso della raccolta degli elementi visualizzati per individuare il collegamento, anziché nell'elemento di destinazione.Fare clic sul menu a discesa e utilizzare la visualizzazione struttura ad albero per selezionare la relazione di riferimento anziché il database di destinazione.Nell'esempio, la relazione viene ArtistAppearedOnAlbums.

  3. set Percorso per visualizzare proprietà per spostarsi dal collegamento all'elemento di destinazione.Nell'esempio, questo viene artista.

  4. set Proprietà di in base alla proprietà appropriata dell'elemento di destinazione, ad esempio nome.

  5. Trasformazione di tutti i modelli, la compilazione e l'esecuzione di DSL e apre un modello di test.

  6. Nel diagramma di modello, creare le classi appropriate della forma, impostare i nomi e creare un collegamento relativo.Nella forma del raggruppamento, i nomi degli elementi collegati da visualizzare.

  7. Selezionare il collegamento o l'elemento nella forma del raggruppamento.I collegamenti che l'elemento è nascosto.

Definizione delle porte sul limite di un'altra forma

Una porta è una forma che si trova sul limite di un'altra forma.

Le porte possono essere utilizzate per fornire un punto di connessione fisso in un'altra forma, un utente può estrarre i connettori.In questo caso, è possibile rendere la forma di una porta trasparente.

Per un esempio che utilizza le porte, selezionare Diagramma dei componenti modello quando si crea una nuova soluzione DSL.In questo esempio vengono illustrati i problemi principali che è possibile considerare quando si definiscono le porte:

  • Esiste una classe di dominio che rappresenta il contenitore delle porte, Component.

  • Esiste una classe di dominio che rappresenta le porte.Nell'esempio, questo viene ComponentPort.

  • Esiste una relazione che utilizza la classe di dominio del contenitore alla classe di dominio della porta.Per ulteriori informazioni, vedere Definizione delle classi di dominio.

  • Se si desidera che i tipi diversi di porte da utilizzare nello stesso contenitore, è possibile creare le sottoclassi della classe di dominio della porta.Nell'esempio, InPort e OutPort ereditare da ComponentPort.

  • La classe di dominio del contenitore è possibile eseguire il mapping a qualsiasi tipo di forma.Nell'esempio, viene ComponentShape.Per ulteriori informazioni, vedere Definizione di forme.

  • Le classi di dominio della porta è stato eseguito il mapping per trasferire le forme.Sarà possibile eseguire il mapping delle classi derivate per separare le classi di forma di porta, o eseguire il mapping della classe base in una classe di forma della porta.

In altri aspetti, le forme di porta si comportano come descritto in Definizione di forme.

Per ulteriori informazioni, vedere Proprietà delle forme delle porte.

Definendo un modello DSL che ha Corsie

Corsie è un oggetto orizzontale o una partizione verticale di un diagramma.Ogni corsia corrisponde a un elemento del modello.La definizione di modello DSL richiede una classe di dominio per gli elementi di corsia.

Il modo migliore per creare un modello DSL con corsie consiste nel creare una nuova soluzione DSL e scegliere il modello della soluzione flusso di attività.Nella definizione di modello DSL, la classe dell'attore è la classe di dominio eseguito il mapping a corsia.rinominare questo e le altre classi per indicare il progetto.

Per aggiungere una classe da visualizzare come forma in uno corsia, creare una relazione che utilizza tra la classe di corsia e la nuova classe.Gli utenti potranno a trascinare gli elementi da uno corsia a un altro, ma ogni elemento verrà sempre in uno corsia particolare.Nel modello della soluzione flusso di attività, l'elemento di flusso è un elemento figlio della classe di corsia.

Per aggiungere una classe da visualizzare come forma indipendentemente da corsie, creare una relazione che utilizza tra la classe radice e la nuova classe.Gli utenti potranno inserire queste forme in un punto qualsiasi del diagramma, incluso fra i limiti di corsie e esterno corsie.Nel modello della soluzione flusso di attività, il commento è un elemento figlio della classe radice.

Per ulteriori informazioni, vedere Proprietà delle corsie.

Tipi di aggiunta di proprietà

Bb126581.collapse_all(it-it,VS.110).gifEnumerazioni e valori letterali del dominio

Un'enumerazione di dominio è un tipo con diversi valori letterali.

Per aggiungere un'enumerazione del dominio, fare clic con il pulsante destro del mouse sulla directory radice del modello in DSL Esplora Risorse quindi scegliere Aggiungere la nuova enumerazione del dominio.L'elemento verrà visualizzata in DSL Esplora Risorse in Tipi di dominio nodo.Questo elemento non viene visualizzato nel diagramma.

Per aggiungere i valori letterali di enumerazione all'enumerazione del dominio, fare clic con il pulsante destro del mouse sull'enumerazione di dominio in DSL Esplora Risorse quindi scegliere aggiungere il nuovo valore letterale di enumerazione.

Per impostazione predefinita, una proprietà con un tipo di enumerazione può essere impostata su solo un valore dell'enumerazione per volta.Se si desidera che gli utenti e i programmatori che sia possibile impostare qualsiasi combinazione di valori - “campo di bit„ - impostare IsFlags proprietà dell'enumerazione.

Bb126581.collapse_all(it-it,VS.110).giftipi di esterno

Quando si imposta il tipo di proprietà del dominio, se non si individua il tipo si desidera che in tipo elenco a discesa, è possibile aggiungere un tipo esterno.Ad esempio, è possibile aggiungere System.Drawing.Color tipo all'elenco.

Per aggiungere un tipo, fare clic con il pulsante destro del mouse sulla directory radice del modello nel modello DSL Esplora soluzioni e scegliere aggiungere il nuovo tipo esterno.Nella Finestra Proprietà, impostare il nome su Color e lo spazio dei nomi a System.Drawing.Questo tipo viene visualizzato nel modello DSL Esplora Soluzioni sotto Tipi di dominio.È può essere ogni volta che viene impostato il tipo di proprietà del dominio.

Personalizzare il modello DSL

Utilizzando le tecniche descritte in questo argomento, è possibile creare rapidamente un modello DSL con una notazione schematica, formato leggibile XML e gli strumenti di base che sono obbligatori generare il codice e altri elementi.

Esistono due metodi di estensione della definizione di modello DSL:

  1. Ottimizzare il modello DSL utilizzando più funzionalità della definizione di modello DSL.Ad esempio, è possibile creare un unico strumento del connettore che possibile creare tipi diversi di connettori ed è possibile controllare le regole in cui viene eliminato un elemento inoltre rimuove gli elementi correlati.Queste tecniche sono principalmente eseguiti impostando i valori nella definizione di modello DSL e alcune richiedono alcune righe di codice programma.

    Per ulteriori informazioni, vedere Personalizzazione ed estensione di un linguaggio specifico di dominio.

  2. Estendere gli strumenti di modellazione tramite il codice programma per realizzare effetti più avanzati.Ad esempio, è possibile creare comandi di menu che possono modificare il modello e è possibile creare strumenti integrati due o più DSLs.VMSDK è appositamente progettato per semplificare l'integrazione delle estensioni con il codice generato dalla definizione di modello DSL.Per ulteriori informazioni, vedere Scrittura di codice per personalizzare un linguaggio specifico di dominio.

Bb126581.collapse_all(it-it,VS.110).gifModificare la definizione di modello DSL

Quando si crea un elemento in una definizione di modello DSL, molti valori predefiniti vengono impostati automaticamente.Dopo che sono stati impostati, è possibile modificarle.Ciò semplifica lo sviluppo di un modello DSL, pur consente più personalizzazioni.

Ad esempio, quando si esegue il mapping di una forma a un elemento, il percorso dell'elemento padre di mapping viene impostato automaticamente come la relazione che utilizza classi di dominio.Tuttavia, se le successive modifiche la relazione che utilizza, il percorso dell'elemento padre non modificata automaticamente.

Si consiglia pertanto essere presente che quando si modificano le relazioni nella definizione di modello DSL, non è insolito per gli errori venga segnalato uno quando si salva la definizione, o quando si trasforma tutti i modelli.La maggior parte di questi errori sono facili da correggere.Fare doppio clic sulla segnalazione errori per visualizzare il percorso dell'errore.

Vedere anche Procedura: modificare lo spazio dei nomi di un linguaggio specifico di dominio.

Risoluzione dei problemi

Nella tabella seguente sono elencati alcuni dei problemi comuni che si verificano quando si progetta un linguaggio specifico di dominio, insieme ai suggerimenti per la soluzione.Ulteriori suggerimenti è disponibile su La visualizzazione degli strumenti del forum di Extensibililty.

Problema

Suggerimento

Le modifiche che ho eseguita nel file di definizione DSL non hanno alcun effetto.

Fare clic su Trasformazione di tutti i modelli nella barra degli strumenti sopra Esplora soluzioni e quindi ricompilare la soluzione.

Le forme mostrano il nome di un elemento Decorator anziché il valore della proprietà.

Impostare il mapping dell'elemento Decorator.Nel diagramma della definizione di modello DSL, fare clic sul mapping dell'elemento del diagramma, ovvero la riga grigia tra la classe di dominio e la classe della forma.

aprire Dettagli DSL finestra.Se non è possibile vedergli, scegliere dal menu Visualizza puntare su, altre finestrequindi scegliere Dettagli DSL.

Fare clic su Mapping dell'elemento Decorator scheda.Selezionare il nome dell'elemento Decorator.Assicurarsi che la casella accanto sia selezionata.In Proprietà di, selezionare il nome di una proprietà del dominio.

Per ulteriori informazioni, vedere Forme del diagramma.

Nel modello DSL Esplora Risorse, non è possibile aggiungere a una raccolta.Ad esempio, quando si fa clic con il pulsante destro del mouse sugli strumenti, non è “aggiunge comando dello strumento„ nel menu.

Nell'esploratore per my DSL, non è possibile aggiungere un elemento in un elenco.

Fare clic con il pulsante destro del mouse sul nodo che si sta cercando.Quando si desidera aggiungere a un elenco, il comando aggiungi non è nel nodo elenco, ma il proprietario.

È stato creato una classe di dominio, ma non è possibile creare istanze nell'esploratore del linguaggio.

Ogni classe di dominio tranne la radice deve essere la destinazione di una relazione che utilizza.

Nell'esploratore per my DSL, gli elementi vengono visualizzati solo con i nomi del tipo.

Nella definizione di modello DSL, selezionare una proprietà del dominio della classe, quindi nella Finestra Proprietà impostare È il nome dell'elemento per allineare.

Un modello DSL è visualizzata sempre nell'editor XML.

Ciò può verificarsi a causa di un errore durante il file viene visualizzata.Tuttavia, anche dopo la risoluzione dell'errore, è necessario dichiarare in modo esplicito reimpostare l'editor per essere la finestra di progettazione DSL.

Fare clic con il pulsante destro del mouse sull'elemento di progetto, scegliere Apri con e selezionare TheLanguagefinestra di progettazione (impostazione predefinita).

La casella degli strumenti del linguaggio DSL non viene visualizzato dopo che sono stati modificati i nomi degli assembly.

Controllare e l'aggiornamento DslPackage\GeneratedCode\Package.tt Per ulteriori informazioni, vedere Procedura: modificare lo spazio dei nomi di un linguaggio specifico di dominio.

La casella degli strumenti del linguaggio DSL non viene visualizzato, ma non è stato modificato il nome.

In alternativa, una finestra di messaggio con la segnalazione l'omissione di caricare un'estensione.

reimpostare l'istanza sperimentale e ricompilare la soluzione.

  1. Nel menu Start di windows, in Tutti i programmiespandere, Visual Studio SDK, quindi strumentiquindi scegliere Reimpostare istanza sperimentale di Microsoft Visual Studio.

  2. In Visual StudioCompilazione menu, fare clic su Soluzione di ricompilazione.

Vedere anche

Attività

Creazione di un linguaggio specifico di dominio basato su Windows Form

Concetti

Introduzione ai linguaggi specifici del dominio

Creazione di un linguaggio specifico di dominio basato su WPF