Bagikan melalui


Menulis kode untuk mengkustomisasi bahasa khusus domain

Bagian ini memperlihatkan kepada Anda cara menggunakan kode kustom untuk mengakses, memodifikasi, atau membuat model dalam bahasa khusus domain (DSL).

Konteks untuk menulis kode untuk DSL

Ada beberapa konteks di mana Anda dapat menulis kode yang berfungsi dengan DSL:

Penyimpanan Dalam Memori

Instans kelas yang Anda tentukan di DslDefinition.dsl disimpan dalam struktur data yang disebut In-Memory Store (IMS) atau Store. Kelas yang Anda tentukan dalam DSL selalu mengambil Store sebagai argumen ke konstruktor. Misalnya, jika DSL Anda menentukan kelas yang disebut Example:

Example element = new Example (theStore);

Menyimpan objek di Toko, bukan hanya sebagai objek biasa, memberikan beberapa manfaat.

  • Transaksi. Anda dapat mengelompokkan serangkaian perubahan terkait ke dalam transaksi:

    using (Transaction t = store.TransactionManager.BeginTransaction("updates"))
    {
      // make several changes to Store elements here
      t.Commit();
    }
    

    Jika pengecualian terjadi selama perubahan, sehingga final Commit() tidak dilakukan, Penyimpanan diatur ulang ke status sebelumnya. Pendekatan ini membantu Anda memastikan bahwa kesalahan tidak meninggalkan model dalam keadaan tidak konsisten. Untuk informasi selengkapnya, lihat Menavigasi dan Memperbarui Model dalam Kode Program.

  • Hubungan biner. Jika Anda menentukan hubungan antara dua kelas, instans di kedua ujungnya memiliki properti yang menavigasi ke ujung lainnya. Dua ujung selalu disinkronkan. Misalnya, jika Anda menentukan hubungan orang tua dengan peran bernama Orang Tua dan Anak, Anda dapat menulis:

    John.Children.Add(Mary)

    Kedua ekspresi berikut sekarang benar:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    Anda juga dapat mencapai efek yang sama dengan menulis:

    Mary.Parents.Add(John)

    Untuk informasi selengkapnya, lihat Menavigasi dan Memperbarui Model dalam Kode Program.

  • Aturan dan Peristiwa. Anda dapat menentukan aturan yang diaktifkan setiap kali perubahan yang ditentukan dibuat. Aturan digunakan, misalnya, untuk menjaga bentuk pada diagram tetap terbarui dengan elemen model yang ada. Untuk mendapatkan informasi selengkapnya, lihat Merespons dan Menyebarluaskan Perubahan.

  • Serialisasi. Store menyediakan cara standar untuk menserialisasikan objek yang dikandungnya ke file. Anda dapat menyesuaikan aturan untuk serialisasi dan deserialisasi. Untuk informasi selengkapnya, lihat Menyesuaikan File Storage dan Serialisasi XML.