Compartir a través de


Escribir código para personalizar lenguajes específicos de dominio

En esta sección se muestra cómo utilizar código personalizado para tener acceso, modificar, o para crear un modelo en un lenguaje específico de dominio.

Hay varios contextos en los que puede escribir código que funciona con un ADSL:

Las instancias de las clases que defina en DslDefinition.dsl se mantienen una estructura de datos con el almacén de memoria (IMS) o almacén . Las clases que defina en ADSL presentan siempre un almacén como argumento el constructor. Por ejemplo, si un DSL define una clase denominada Example:

Example element = new Example (theStore);

conservar objetos en el almacén (en lugar de simplemente como objetos ordinarios) ofrece varias ventajas.

  • transacciones. Puede agrupar una serie de cambios relacionados en una transacción:

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

    {

    // make several changes to Store elements here

    t.Commit();

    }

    Si se produce una excepción durante los cambios, no para realizar Commit() final, el almacén se restaurará el estado anterior. Esto ayuda a asegurarse de que los errores no permiten el modelo en un estado incoherente. Para obtener más información, vea Navegar y actualizar un modelo en el código del programa.

  • relaciones binarias. Si define una relación entre dos clases, instancias en ambos extremos tienen una propiedad que navegue al otro extremo. los dos extremos se sincronizan siempre. Por ejemplo, si define una relación de la paternidad con roles denominados Parents y los elementos secundarios, podría escribir:

    John.Children.Add(Mary)

    Ambas expresiones siguientes son verdaderas ahora:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    También podría lograr el mismo efecto escribiendo:

    Mary.Parents.Add(John)

    Para obtener más información, vea Navegar y actualizar un modelo en el código del programa.

  • reglas y eventos. Puede definir reglas que desencadenan siempre que se realicen cambios especificados. Las reglas se utilizan, por ejemplo, para mantener las formas en el diagrama actualizadas con elementos del modelo que presentan. Para obtener más información, vea Responder a los cambios y propagarlos.

  • serialización. El almacén proporciona un método estándar de serializar los objetos que contiene un archivo. Puede personalizar las reglas para serializar y deserializar. Para obtener más información, vea Personalizar el almacenamiento de archivos y la serialización XML.

Vea también

Conceptos

Personalizar y ampliar lenguajes específicos de dominio