Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
Perintah kustom. Anda dapat membuat perintah yang dapat dipanggil pengguna dengan mengklik kanan diagram, dan yang dapat memodifikasi model. Untuk informasi selengkapnya, lihat Cara: Menambahkan Perintah ke Menu Pintasan.
Validasi. Anda dapat menulis kode yang memverifikasi bahwa model dalam status yang benar. Untuk informasi selengkapnya, lihat Validasi dalam Bahasa Khusus Domain.
Mengesampingkan perilaku default. Anda dapat memodifikasi banyak aspek kode yang dihasilkan dari DslDefinition.dsl. Untuk informasi selengkapnya, lihat Mengambil alih dan Memperluas Kelas yang Dihasilkan.
Transformasi Teks. Anda dapat menulis templat teks yang berisi kode yang mengakses model dan menghasilkan file teks, misalnya untuk menghasilkan kode program. Untuk informasi selengkapnya, lihat Membuat Kode dari Bahasa Khusus Domain.
Ekstensi Visual Studio lainnya. Anda dapat menulis ekstensi VSIX terpisah yang membaca dan memodifikasi model. Untuk informasi selengkapnya, lihat Cara: Membuka Model dari File dalam Kode Program
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.