Escrever código para personalizar uma linguagem específica de domínio

Esta seção mostra como usar o código personalizado para acessar, modificar ou criar um modelo em um idioma específico do domínio.

Há vários contextos em que você pode escrever código que funciona com uma DSL:

Instâncias de classes que você define no DslDefinition.dsl são mantidas em uma estrutura de dados chamada a Armazenamento em memória de (IMS) ou armazenamento.As classes que definem uma DSL sempre levam um armazenamento como um argumento para o construtor.Por exemplo, se seu DSL define uma classe chamada exemplo:

Example element = new Example (theStore);

manter os objetos no armazenamento (em vez de apenas tão comuns objects) oferece vários benefícios.

  • Transações.Você pode agrupar uma série de alterações relacionadas em uma transação:

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

    {

    // make several changes to Store elements here

    t.Commit();

    }

    Se ocorrer uma exceção durante as alterações, para que o Commit () final não é executada, o armazenamento será redefinido para seu estado anterior.Isso ajuda a você para certificar-se de que erros não deixam o modelo em um estado inconsistente.Para obter mais informações, consulte Navegando e atualizando um modelo de código de programa.

  • Relações binárias.Se você definir uma relação entre duas classes, instâncias em ambas as extremidades tem uma propriedade que navega para a outra extremidade.As duas extremidades são sempre sincronizadas.Por exemplo, se você definir uma relação de parenthood com funções chamadas pais e filhos, você poderia escrever:

    John.Children.Add(Mary)

    Agora, as expressões a seguir forem verdadeiras:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    Você também pode obter o mesmo efeito, escrevendo:

    Mary.Parents.Add(John)

    Para obter mais informações, consulte Navegando e atualizando um modelo de código de programa.

  • Eventos e regras.Você pode definir regras que é acionam sempre que forem feitas alterações especificadas.Regras são usadas, por exemplo, para manter as formas no diagrama atualizado com os elementos de modelo que eles apresentam.Para obter mais informações, consulte Respondendo a e propagação de alterações.

  • Serialização.O armazenamento fornece uma maneira padrão para serializar os objetos que nele contidos em um arquivo.Você pode personalizar as regras para serialização e desserialização.Para obter mais informações, consulte Personalizando a serialização de XML e armazenamento de arquivos.

Consulte também

Conceitos

Personalizar e estender uma linguagem específica de domínio