撰寫程式碼來自訂網域指定的語言

本節會示範如何使用自訂的程式碼來存取、 修改或建立以網域特定語言的模型。

有幾種內容,您可以在此撰寫 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();

    }

    如果發生例外狀況時所做的變更,這樣就不會執行最後的 Commit(),儲存區會重設為其先前的狀態。這可協助您確定錯誤不會在不一致的狀態使模型。如需詳細資訊,請參閱 巡覽及更新程式碼中的模型

  • 「 二元 」 關係。如果您定義兩個類別之間的關係,在兩端的執行個體就會有一個巡覽到另一端的屬性。這兩個部分一定會同步處理。比方說,如果您是使用名為父代和子系的角色定義 parenthood 關聯性,您可以撰寫:

    John.Children.Add(Mary)

    現在,如果兩個以下的運算式都成立:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    您也可以撰寫來達成相同的效果:

    Mary.Parents.Add(John)

    如需詳細資訊,請參閱 巡覽及更新程式碼中的模型

  • 規則與事件。您可以定義指定的變更時引發的規則。會使用規則,比方說,讓圖形保持在圖表上保持在最新狀態所呈現的模型項目。如需詳細資訊,請參閱 回應及傳播變更

  • 序列化。存放區提供了標準的方式,用來序列化至檔案包含的物件。您可以自訂序列化和還原序列化的規則。如需詳細資訊,請參閱 自訂檔案儲存體和 XML 序列化

請參閱

概念

自訂及擴充網域指定的語言