Поделиться через


Написание кода для настройки доменного языка

В данном разделе, показывается, как использовать пользовательский код для доступа, изменить или создать модель в доменном языке.

Количество контекстов, в которых можно писать код, который работает с DSL:

Экземпляры классов, определенных в DslDefinition.dsl располагаются в структуре данных Хранилище данных в памяти (IMS) или Хранилище.Классы, заданные в DSL всегда принимают хранилище в качестве аргумента конструктору.Например, если DSL определяет класс с именем Примере:

Example element = new Example (theStore);

хранения объектов в хранилище (а не просто как обычные объекты) предоставляет несколько преимуществ.

  • Транзакции.Можно группировать ряд связанных изменений в транзакцию.

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

    {

    // make several changes to Store elements here

    t.Commit();

    }

    Если исключение возникает в процессе изменений, чтобы не будет выполнена финальная фиксация (), хранилище будет сброшен на свое предыдущее состояние.Это позволяет убедиться в том, что ошибки не оставляют модель в несогласованном состоянии.Дополнительные сведения см. в разделе Перемещение по модели и обновление модели в коде программы.

  • Двоичные связи.Если указать связь между классами, 2 экземпляров на обоих концах имеют свойство, которое переходит к другому концу.2 Конца всегда синхронизированы.Например, если связь определена родительства с именами ролей с родительским элементом и потомками, то можно написать:

    John.Children.Add(Mary)

    Теперь оба следующих выражений условий:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    Также можно добиться такого же эффекта написать:

    Mary.Parents.Add(John)

    Дополнительные сведения см. в разделе Перемещение по модели и обновление модели в коде программы.

  • правила и события.Можно определить правила, которые возникают при внесении определенных изменений.Используются правила, например хранить фигуры на схеме последним с элементами модели, которые они представляют.Дополнительные сведения см. в разделе Реагирование на изменения и их распространение.

  • Сериализация.Хранилище предоставляет стандартный способ сериализации объектов в нем содержится в файл.Можно настраивать правила для сериализации и десериализации.Дополнительные сведения см. в разделе Настройка хранилища файлов и XML-сериализации.

См. также

Основные понятия

Настройка и расширение доменного языка