Condividi tramite


Scrittura di codice per personalizzare un linguaggio specifico di dominio

In questa sezione viene illustrato come utilizzare codice personalizzato per accedere, modificare, o creare un modello in un linguaggio specifico di dominio.

Esistono diversi contesti in cui è possibile scrivere codice che utilizza un modello DSL:

Le istanze delle classi definite in DslDefinition.dsl vengono inserite in una struttura di dati chiamata Archiviare in memoria (IMS) o archivio.Le classi definite in un modello DSL hanno sempre un archivio come argomento al costruttore.Ad esempio, se il modello DSL definisce Example chiamato classe:

Example element = new Example (theStore);

mantenimento degli oggetti nell'archivio (anziché come oggetti comuni) fornisce molti vantaggi.

  • transazioni.È possibile raggruppare una serie di correlato modifiche in un'unica transazione:

    using (Transaction t = store.TransactionManager.BeginTransaction("updates"))

    {

    // make several changes to Store elements here

    t.Commit();

    }

    Se si verifica un'eccezione durante le modifiche, in modo che Commit() finale non viene eseguita, quest'ultimo verrà reimpostato allo stato precedente.Ciò consente di garantire che gli errori non lasciare il modello in uno stato incoerente.Per ulteriori informazioni, vedere Esplorazione e aggiornamento di un modello nel codice del programma.

  • relazioni binarie.Se si definisce una relazione tra due classi, le istanze in entrambe le estremità dispongono di una proprietà che consente di passare all'altra estremità.Le due estremità vengono sincronizzate sempre.Ad esempio, se si definisce una relazione di paternità con i ruoli denominati Parents e figlio, è possibile scrivere:

    John.Children.Add(Mary)

    Entrambe le espressioni seguenti sono vere:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    È inoltre possibile ottenere lo stesso risultato scrivendo:

    Mary.Parents.Add(John)

    Per ulteriori informazioni, vedere Esplorazione e aggiornamento di un modello nel codice del programma.

  • Regole ed eventi.È possibile definire regole che vengono generati quando le modifiche specificate vengono apportate.Le regole vengono utilizzate, ad esempio, mantenere le forme del diagramma aggiornato con gli elementi del modello che presentano.Per ulteriori informazioni, vedere Risposta alle modifiche e propagazione delle modifiche.

  • serializzazione.L'archivio fornisce una modalità standard per serializzare gli oggetti in essa contenuti in un file.È possibile personalizzare le regole per la serializzazione e la deserializzazione.Per ulteriori informazioni, vedere Personalizzazione dell'archiviazione dei file e della serializzazione XML.

Vedere anche

Concetti

Personalizzazione ed estensione di un linguaggio specifico di dominio