Udostępnij za pośrednictwem


Pisanie kodu pod kątem dostosowywania języka specyficznego dla domeny

W tej sekcji przedstawiono sposób użycia kodu niestandardowego do dostępu, zmodyfikować lub utworzyć model w języku specyficzne dla domeny.

Istnieje wiele kontekstów, w których można napisać kod, który działa z modemu DSL:

Wystąpienia klas, które definiują w DslDefinition.dsl są przechowywane w strukturze danych, nazywane Magazyn W pamięci (ISP) lub Magazyn.Klas, które można zdefiniować w DSL zawsze podjąć magazynu jako argument do konstruktora.Na przykład, jeśli modem DSL definiuje klasę o nazwie przykład:

Example element = new Example (theStore);

Przechowywanie obiektów w magazynie (zamiast po prostu jako zwykłe obiektów) zapewnia kilka korzyści.

  • Transakcje.Można grupować serii powiązanych zmian do transakcji:

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

    {

    // make several changes to Store elements here

    t.Commit();

    }

    Jeśli wystąpi wyjątek podczas zmiany, tak aby końcowe Commit() nie jest wykonywane, magazynu zostaną zresetowane do poprzedniego stanu.Pomaga upewnić się, że błędy nie opuszczą modelu w niespójnym stanie.Aby uzyskać więcej informacji, zobacz Nawigowanie i aktualizowanie modelu w kodzie programu.

  • Relacje dwuelementowe.W przypadku zdefiniowania relacji między dwoma klasami, wystąpienia na obu końcach mają właściwość, która przechodzi do drugiego końca.Dwa końce są zawsze zsynchronizowane.Na przykład jeśli zdefiniować relację rodzicielstwa z rolami o nazwie rodziców i dzieci, można napisać:

    John.Children.Add(Mary)

    Oba z następujących wyrażeń, teraz są spełnione:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    Może również osiągnąć ten sam efekt, pisząc:

    Mary.Parents.Add(John)

    Aby uzyskać więcej informacji, zobacz Nawigowanie i aktualizowanie modelu w kodzie programu.

  • Zasady i zdarzenia.Można zdefiniować reguły, które ognia w każdym przypadku, gdy określonych zmian.Zasady są używane na przykład, aby zachować aktualne elementy modelu, jakie stanowią kształty na diagramie.Aby uzyskać więcej informacji, zobacz Odpowiadanie na zmiany i propagowanie zmian.

  • Serializacja.Magazyn, udostępnia standardowy sposób serializować obiektów, które zawiera plik.Można dostosować reguły do szeregowania i deserializacji.Aby uzyskać więcej informacji, zobacz Dostosowywanie przechowywania plików i serializacji XML.

Zobacz też

Koncepcje

Dostosowywanie i rozszerzanie języka specyficznego dla domeny