Zápis kódu pro úpravu jazyka specifického pro doménu
Tato část zobrazuje přístup, úprava nebo vytvoření modelu v jazyce specifické pro doménu pomocí vlastního kódu.
Existuje několik kontextů, které můžete napsat kód, který pracuje s DSL:
Vlastní příkazy. Můžete vytvořit příkaz uživatelů lze vyvolat klepnutím pravým tlačítkem myši na diagramu, a který můžete upravit modelu.Další informace naleznete v tématu Postupy: Přidání příkazu do místní nabídky.
Ověření. Můžete napsat kód, který ověřuje, že model je ve správném stavu.Další informace naleznete v tématu Ověřování v jazyce specifickém pro doménu.
Přepsání výchozího nastavení. Můžete upravit mnoho aspektů kód, který je generován z DslDefinition.dsl.Další informace naleznete v tématu Přepisování a rozšiřování vygenerovaných tříd.
Transformace textu. Můžete napsat text šablony, které obsahují kód, který přistupuje k modelu a vygeneruje textový soubor, například generovat kód programu.Další informace naleznete v tématu Vytváření kódu z jazyka specifického pro doménu.
Další rozšíření Visual Studio. Můžete psát samostatné přípony VSIX, které číst a měnit modely.Další informace získáte v tématu Postupy: Otevření modelu ze souboru v kódu programu
Instance tříd, které definují v DslDefinition.dsl jsou uloženy ve struktuře dat s názvem v paměti úložiště (IMS) nebo úložiště.Třídy, které definujete DSL vždy trvat úložiště jako argument konstruktoru.Pokud například vaše DSL definuje třídy nazvanou například:
Example element = new Example (theStore);
udržování objekty v úložišti (namísto stejně jako normální objekty) poskytuje několik výhod.
Transakce.Můžete seskupit řadu souvisejících změn do transakce:
using (Transaction t = store.TransactionManager.BeginTransaction("updates"))
{
// make several changes to Store elements here
t.Commit();
}
Pokud během změny, dojde k výjimce, tak, aby konečný Commit() nebyla provedena, obnoví úložiště do předchozího stavu.Pomáhá zajistit, že chyby nesmějí opustit modelu v nekonzistentním stavu.Další informace naleznete v tématu Navigace v modelu a aktualizace modelu v kódu programu.
Binární vztahy.Pokud definujete vztah mezi dvěma třídami, instance na obou koncích mají vlastnost, která přejde na druhém konci.Vždy se synchronizují dvě zakončení.Například definujete vztah rodičovství s rolí s názvem rodiče a děti, můžete napsat:
John.Children.Add(Mary)
Následující výrazy platí obě nyní:
John.Children.Contains(Mary)
Mary.Parents.Contains(John)
Nelze také dosáhnout stejného efektu zápisem:
Mary.Parents.Add(John)
Další informace naleznete v tématu Navigace v modelu a aktualizace modelu v kódu programu.
Pravidla a události.Můžete definovat pravidla, které požární kdykoli zadané změny.Pravidla se používají například k udržování obrazce v diagramu s prvky modelu, které představují.Další informace naleznete v tématu Reagování na změny a šíření změn.
Serializace.Úložiště poskytuje standardní způsob serializovat objekty, které obsahuje do souboru.Můžete přizpůsobit pravidla pro serializaci a rekonstrukci.Další informace naleznete v tématu Přizpůsobení souborového úložiště a serializace XML.