Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a szakasz bemutatja, hogyan használhat egyéni kódot egy tartományspecifikus nyelven (DSL) lévő modell elérésére, módosítására vagy létrehozására.
DSL-kód írásának környezete
Számos olyan környezet van, amelyben DSL-vel működő kódot írhat:
Egyéni parancsok. Létrehozhat egy parancsot, amelyet a felhasználók a jobb gombbal a diagramra kattintva hívhatnak meg, és amely módosíthatja a modellt. További információért lásd a következőt: Parancs hozzáadása a helyi menühöz.
Érvényesítés. Írhat olyan kódot, amely ellenőrzi, hogy a modell megfelelő állapotban van-e. További információ: Ellenőrzés Domain-Specific nyelven.
Felülírja az alapértelmezett viselkedést. A DslDefinition.dsl-ből létrehozott kód számos aspektusát módosíthatja. További információ: A generált osztályok felülbírálása és kiterjesztése.
Szövegátalakítás. Olyan szövegsablonokat írhat, amelyek olyan kódot tartalmaznak, amely hozzáfér egy modellhez, és létrehoz egy szövegfájlt, például programkód létrehozásához. További információ: Kód létrehozása Domain-Specific nyelvről.
Egyéb Visual Studio-bővítmények. Különálló VSIX-bővítményeket írhat, amelyek modelleket olvasnak és módosítanak. További információk a(z) Útmutató: Modell megnyitása fájlból programkódban
In-Memory Áruház
A DslDefinition.dsl-ben definiált osztályok példányai egy In-Memory Store (IMS) vagy Store nevű adatstruktúrában vannak tárolva. A DSL-ben definiált osztályok mindig argumentumként fogadnak el egy Tárolót a konstruktorhoz. Ha például a DSL a következő nevű Exampleosztályt definiálja:
Example element = new Example (theStore);
Az objektumok tárolása az Áruházban a szokásos objektumok helyett számos előnnyel jár.
Tranzakciók. A kapcsolódó módosítások sorozatát egy tranzakcióba csoportosíthatja:
using (Transaction t = store.TransactionManager.BeginTransaction("updates")) { // make several changes to Store elements here t.Commit(); }Ha kivétel történik a módosítások során, így a végleges
Commit()nem lesz végrehajtva, az Áruház visszaáll a korábbi állapotára. Ezzel a módszerrel gondoskodhat arról, hogy a hibák ne hagyják inkonzisztens állapotban a modellt. További információ: Modell navigálása és frissítése a ProgramKódban.Bináris kapcsolatok. Ha két osztály közötti kapcsolatot határoz meg, a mindkét végén lévő példányok rendelkeznek egy tulajdonsággal, amely a másik végére mutat. A két vége mindig szinkronizálva van. Ha például szülői kapcsolatot határoz meg a Szülők és gyermekek nevű szerepkörökkel, a következőt írhatja:
John.Children.Add(Mary)A következő kifejezések mindegyike igaz:
John.Children.Contains(Mary)Mary.Parents.Contains(John)Ugyanezt a hatást a következő írással is elérheti:
Mary.Parents.Add(John)További információ: Modell navigálása és frissítése a ProgramKódban.
Szabályok és események. Definiálhat olyan szabályokat, amelyek a megadott módosítások végrehajtásakor aktiválódnak. A szabályok például arra szolgálnak, hogy a diagramon lévő alakzatok naprakészek legyenek az általuk használt modellelemekkel. További információt a Változások megválaszolása és propagálása című témakörben talál.
Szerializálás. Az Áruház szabványos módszert biztosít a fájlban található objektumok szerializálására. Testre szabhatja a szerializálás és a deszerializálás szabályait. További információ: A fájltárolás és az XML-szerializálás testreszabása.