Porady: definiowanie języka właściwego dla domeny
Aby zdefiniować języka specyficznego dla domeny (DSL), należy utworzyć Visual Studio rozwiązanie z szablonu.Część klucza rozwiązania jest diagramu definicji DSL, przechowywanego w DslDefinition.dsl.Definicja DSL definiuje klas i kształty DSL.Po zmodyfikowaniu i dodanie do tych elementów, możesz dodać kod program, aby dostosować DSL bardziej szczegółowo.
Jeśli korzystasz z DSLs, zalecamy pracy za pośrednictwem DSL Tools Lab, który można znaleźć w tej witrynie: Visualizaton i modelowania SDK
W tym temacie
Wybieranie rozwiązanie szablonu
Wzorce do definiowania DSL
Klasy elementu modelu
Kształty na diagramu
Odwołania i łączniki
Kształty, które zawierają listy: przedziału kształtów
Porty w granicach innego kształtu
Tory
Typy właściwości
Dostosowywanie swojego DSL
Rozwiązywanie problemów
Wybieranie rozwiązanie szablonu
Aby zdefiniować DSL, należy zainstalować następujące składniki:
Visual Studio |
|
Visual Studio SDK |
|
Program Visual Studio wizualizacji i modelowania zestawu SDK |
Aby utworzyć nowego języka specyficznego dla domeny, należy utworzyć nowy Visual Studio rozwiązania przy użyciu szablonu projektu języka specyficznego dla domeny.
Aby utworzyć rozwiązanie DSL
Tworzenie rozwiązania z języka specyficznego dla domeny szablonu, który znajduje się w obszarze inne projektu typy rozszerzeń w nowy projekt okno dialogowe.
Po kliknięciu przycisku OK, kreatora języka specyficznego dla domeny otwiera i wyświetla listę rozwiązań DSL szablonu.
Kliknij każdy szablon, aby wyświetlić opis.Wybierz rozwiązanie, które najbardziej przypomina ma zostać utworzony.
Każdy szablon DSL Definiuje podstawowe pracy DSL.Chcesz edytować ten DSL do własnych wymagań.
Kliknij każdą próbkę, aby uzyskać więcej informacji.
Wybierz przepływ zadań do utworzenia DSL, który ma torów.Dziedziny odpowiedzialności widoczne są pionowe lub poziome partycje diagramu.
Wybierz modeli składnika do utworzenia DSL, który ma portów.Są to porty małe kształty na krawędzi większy kształt.
Wybierz diagramy klas do definiowania DSL, zawierający kształty przedziału.Kształty przedział zawierają listy elementów.
Wybierz minimalne języka w innych przypadkach, lub jeśli wiadomo.
[!UWAGA]
Jeśli chcesz utworzyć diagram klasy lub diagram składników, należy wziąć pod uwagę przy użyciu modeli UML.Narzędzia modelowania UML zawierają zestaw diagramów zintegrowanych wokół pojedynczego modelu.Są rozszerzalne i może zostać zintegrowany z sieci DSL przy użyciu ModelBus.Aby uzyskać więcej informacji, zobacz Modele projektowania dla projektowania oprogramowania.
Wybierz minimalne WinForm Designer lub minimalne WPF Designer do utworzenia DSL, wyświetlanym na powierzchni Windows Forms lub WPF.Musisz zapisać umożliwia definiowanie edytora kodu.Aby uzyskać więcej informacji, zobacz następujące tematy:
Tworzenie języka specyficznego dla domeny opartego na formularzach systemu Windows
Podaj rozszerzenie nazwy pliku dla swojego DSL w odpowiedniej strony w kreatorze.Jest to rozszerzenia, który będzie używany przez pliki zawierające wystąpień swoje DSL.
Wybierz rozszerzenie nazwy pliku, który nie jest skojarzony z dowolnej aplikacji w komputerze lub w dowolnym komputerze, na którym chcesz zainstalować DSL.Na przykład docx i htm powinien mieć niedopuszczalne pliku rozszerzeń nazw.
Kreator wyświetli ostrzeżenie, jeśli numer wewnętrzny, który wprowadzona jest on używany jako DSL.Należy rozważyć użycie różnych rozszerzenie.Można także zresetować wystąpienie programu Visual Studio SDK doświadczalnych wyczyścić się stary projektantów doświadczalnych.Kliknij przycisk Start, kliknij przycisk wszystkie programy, zestawu SDK programu Microsoft Visual Studio 2010, narzędzia, a następnie zresetować wystąpienia programu Microsoft Visual Studio 2010 doświadczalnych.
Można dostosować ustawienia na innych stron lub pozostawić wartości domyślne.
Kliknij Zakończ.
Kreator utworzy rozwiązanie, które zawiera dwie lub trzy projektów i generuje kod z definicji DSL.
Interfejs użytkownika jest teraz podobny do poniższej ilustracji.
To rozwiązanie definiuje domeny określonego języka.Aby uzyskać więcej informacji, zobacz Omówienie interfejsu użytkownika narzędzi językowych właściwych dla domeny.
Testowanie rozwiązania
Rozwiązanie szablonu udostępnia DSL, który można zmodyfikować lub korzystania, ponieważ jest ona działać.
Aby przetestować rozwiązanie, naciśnij klawisz F5 lub CTRL + F5.Nowe wystąpienie klasy Visual Studio w trybie doświadczalnych.
W nowe wystąpienie klasy Visual Studio, w Eksploratorze rozwiązań, otwórz plik przykładowy.Otwiera się jako diagramu z przybornika.
W przypadku uruchomienia rozwiązania, które utworzono z minimalne języka szablonu, Twoje doświadczalnych Visual Studio będzie podobny do następującego:
Wypróbuj narzędzia.Tworzyć elementy, a następnie połącz je.
Zamknij doświadczalnych wystąpienie Visual Studio.
[!UWAGA]
Po zmodyfikowaniu DSL, nie będzie można zobaczyć kształtów, na przykład przetestować plik.Jednak można tworzyć nowe elementy.
Modyfikowanie szablonu DSL
Zmień nazwę i zachować niektóre lub wszystkie domeny klas i klasy kształtów w szablonie definicji DSL.Twoje nowe nazwy klasy powinna być prawidłowe nazwy CLR, bez spacji i znaków interpunkcyjnych.
Jest szczególnie przydatna zachować te klasy:
Klasy głównego pojawia się w lewym górnym diagramu definicji DSL obszarze klasy i relacje.Zmień jego nazwę na inny niż DSL.Na przykład DSL o nazwie MusicLibrary może być klasą główną o nazwie Muzyka.
Klasa diagramu pojawia się w prawym dolnym diagramu DSL definicji w elementów diagramu kolumny.Trzeba będzie przewiń w prawo, aby go wyświetlić.Zwykle nosi YourDsldiagramu.
Jeśli użyto przepływ zadań szablon i chcesz tworzyć diagramy z torów, zachowania i Zmień nazwę klasy domeny aktor i ActorSwimlane kształtu.
Usuń lub zmień innych klas do swoich wymagań.
Wzorce do definiowania DSL
Zaleca się, czy tworzysz DSL przez dodanie lub dostosowanie jedna lub dwie funkcje w czasie.Dodaj funkcję, uruchom DSL i należy przeprowadzić test, a następnie dodaj co najmniej dwa więcej funkcji.Funkcja typowe swoje DSL może być:
Klasy domeny, osadzenia relacji łączący elementu modelu kształtu, wymagane do wyświetlenia elementów tej klasy w schemacie i narzędzie elementu, który pozwala użytkownikom na tworzenie elementów.
Domena właściwości klasy domeny i pracowników, których wyświetlanie ich na kształt.
Relacja odwołania i łącznika, który wyświetla na diagramu i narzędzia łącznika, który pozwala użytkownikom na tworzenie łączy.
Dostosowanie, które wymaga kodu programu, takie jak ograniczenie weryfikacji lub polecenie menu.
Poniżej opisano sposób tworzenia najbardziej przydatne rodzaju funkcje DSL.Istnieje wiele innych wzorców, z którymi można skonstruować DSL, ale wartości te są najczęściej stosowane.
[!UWAGA]
Po dodaniu funkcję, nie należy zapominać, można kliknąć Transform wszystkie szablony na pasku narzędzi Eksploratora rozwiązań przed tworzenie i uruchamianie swoje DSL.
Poniższa ilustracja pokazuje klasy i relacje część DSL, używany na przykład w tym temacie.
Kolejnego figurę jest model DSL ten przykład:
[!UWAGA]
"Model" odwołuje się do wystąpienia swoje DSL użytkownikom tworzenie, która zwykle jest wyświetlany jako diagramu.W tym temacie opisano diagramu definicji DSL i diagramy modelu, które są wyświetlane, jeśli Twój DSL jest używana.
Definiowanie klas domeny
Klasy domeny reprezentują technologie DSL użytkownika.Wystąpienia są modelu elementy.Na przykład w DSL MusicLibrary może być klasy domeny o nazwie albumu i utworu.
Aby utworzyć klasę domeny, można przeciągnąć z o nazwie klasy domeny narzędzie do diagramu, a następnie zmień nazwę klasy.
Aby uzyskać więcej informacji, zobacz Właściwości klas domeny.
Utwórz relację osadzenia dla każdej klasy domeny
Każdej klasy domeny, z wyjątkiem klasy główny musi być elementem docelowym co najmniej jednej relacji osadzenia lub musi dziedziczyć z klasy, który jest elementem docelowym osadzenia relacji.
W modelu każdy element modelu jest węzłem w drzewie pojedynczy osadzenia relacji.Źródłowy i docelowy osadzenia relacji są często nazywane nadrzędnych i podrzędnych.
Wybór elementu nadrzędnego dla klasy domeny zależy od sposobu jego elementy istnienia do są zależne od innych elementów.Jeśli węzeł drzewa zostanie usunięty, jego poddrzewa zwykle jest również usunięte.Z tego powodu osadzone klasami elementu, które zawierają niezależne istnienia bezpośrednio w obszarze katalogu głównego klasy.
Zwykle jeśli element wewnątrz innego elementu są wyświetlane, można wskazać relacji właściciela.W takim przypadku najbardziej odpowiedniej klasy nadrzędnej jest klasa kontenera.Wyjątek jest, gdy element, który pojawi się wewnątrz kontener jest rzeczywiście tylko łącza do elementu niezależne.W takim przypadku usunięcie kontenera powoduje usunięcie odwołania, ale nie jego docelowy.
W modelach definicji DSL opisane w tym temacie możemy założy elementy wyświetlane wewnątrz kontenera zostaną usunięte po usunięciu kontenera.Bardziej złożonych systemów są możliwe, a można osiągnąć przez definiowanie reguł.
Sposób wyświetlania elementu |
Klasy nadrzędnej (osadzanie) |
Przykład w szablonie rozwiązania DSL |
---|---|---|
Kształt na diagram. Tor. |
Klasa głównego DSL. |
Minimalny język. Przepływ zadań: Klasa aktora. |
Kształt w tor. |
Klasa domeny elementów, które są wyświetlane jako torów. |
Przepływ zadań: Klasa zadanie. |
Element na liście kształtu, gdy element jest usuwany w przypadku usunięcia kontenera. Port na krawędzi kształtu. |
Klasa domeny, która jest zamapowana na kształcie kontenera. |
Diagram klasy: atrybut klasy. Diagram składników: Port klasy. |
Element na liście, nie usunięte, gdy kontenera, został usunięty. |
Klasa głównego DSL. Na liście zostaną wyświetlone łącza odwołania. |
|
Nie jest bezpośrednio wyświetlane. |
Klasa, która stanowi część. |
W przykładzie biblioteka utworów muzycznych albumów są wyświetlane jako prostokąty, w których tytuły utwory są wyświetlane na liście.Z tego powodu nadrzędnego albumu jest klasą głównego utwory muzyczne, a element nadrzędny utwór jest albumu.
Aby utworzyć klasę domeny i osadzanie w tym samym czasie, kliknij przycisk osadzanie relacji narzędzie, a następnie kliknij przycisk klasy nadrzędnej, a następnie kliknij na pustą część diagramu.
Nie jest zazwyczaj konieczne dostosowanie nazwy osadzenia relacji i jego role, ponieważ będą śledzone są nazwy klasy automatycznie.
Aby uzyskać więcej informacji, zobacz Właściwości relacji domeny i Właściwości ról w domenie.
[!UWAGA]
Osadzanie nie jest taka sama jak dziedziczenia.Elementy podrzędne w relacji osadzenia dziedziczą funkcje ich obiektów nadrzędnych.
Dodaj właściwości domeny do każdej klasy domeny
Właściwości domeny przechowywania wartości.Przykłady: nazwa, tytuł, Data publikacji.
Kliknij przycisk właściwości domeny w tej klasie, naciśnij klawisz ENTER, a następnie wpisz nazwę właściwości.Domyślny typ właściwości domeny jest ciągiem.Jeśli chcesz zmienić typ, wybierz właściwość domeny i ustawić typu w właściwości okna.Jeśli żądanego typu nie jest na liście rozwijanej, zobacz Dodawanie typy właściwości.
**Ustaw dla właściwości nazwy elementu.**Wybierz właściwość domeny, który może służyć do identyfikowania elementy w Eksploratorze języka.Na przykład w klasie utworu domeny, że można wybrać właściwość domeny tytuł.W właściwości okna, ustaw jest nazwa elementu do true.
Tworzenie klasy pochodnej domeny
Klasa domeny ma warianty, które dziedziczą jego właściwości i relacje, należy utworzyć klasy, które dziedziczą z niego.Na przykład albumu może mieć klasy pochodne WMA i MP3.
Tworzenie przy użyciu klasy pochodnej klasy domeny narzędzia.
Kliknij przycisk dziedziczenia narzędzie, klasy pochodnej, a następnie kliknij przycisk klasy podstawowej.
Rozważ modyfikator dziedziczenia klasy bazowej do ogólna.Jeśli sądzisz, że może być konieczne wystąpień klasy podstawowej, należy wziąć pod uwagę zamiast tworzenia oddzielne opracowane klasy do nich.
Klasy pochodne dziedziczy właściwości i ról klas bazowych.
Porządek diagramu definicji DSL
Po dodaniu relacje niektórych klas pojawi się w więcej niż jednym miejscu.Aby ograniczyć liczbę wystąpień i diagramu szerszy, kliknij prawym przyciskiem myszy klasy docelowej relacji, a następnie kliknij wyświetlone drzewo w tym miejscu.Dla odwrotny efekt, kliknij prawym przyciskiem myszy klasy docelowej relacji i kliknij przycisk podziału drzewa.Jeśli nie ma tych poleceń menu, upewnij się, czy tylko klasy domeny jest zaznaczone.
Użyj CTRL + Strzałka w górę i CTRL + Strzałka w dół, aby przenieść klasy domeny i klasy kształtów.
Testowanie klasy domeny
Aby przetestować nowe klasy domeny
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędzi Eksploratora rozwiązań do generowania kodu projektanta DSL.Można zautomatyzować ten krok.Aby uzyskać więcej informacji, zobacz Jak zautomatyzować przekształcenia wszystkich szablonów.
**Tworzenie i uruchamianie DSL.**Naciśnij klawisz F5 lub CTRL + F5, aby uruchomić nowe wystąpienie klasy Visual Studio w trybie doświadczalnych.W wystąpieniu doświadczalnych Visual Studio, Otwórz lub Utwórz plik, który ma rozszerzenie nazwy pliku z sieci DSL.
Otwórz Eksploratora.Na stronie diagramu jest w oknie Eksploratora języka, który jest zazwyczaj o nazwie YourLanguage Explorer.Jeśli nie widzisz tego okna, może być na karcie pod Eksploratora rozwiązań.If you cannot find it, on the View menu, point to Other Windows, and then click YourLanguageExplorer.
Twoje Eksploratora przedstawia widok drzewa modelu.
Utwórz nowe elementy. Right-click the root node at the top, and then click Add NewYourClass.
Nowe wystąpienie klasy pojawia się w określonym języku Eksploratora.
Należy sprawdzić, czy każde wystąpienie ma inną nazwę podczas tworzenia nowych wystąpień.Będzie to miało miejsce tylko wtedy, gdy wybrano jest nazwa elementu flaga we właściwości domeny.
Należy sprawdzić, czy właściwości domeny. Z wystąpieniem klasy zaznaczone sprawdzić w oknie dialogowym właściwości.Powinna ona właściwości domeny, które zdefiniowano w tej klasie domeny.
Zapisz plik, należy ją zamknąć i otworzyć go ponownie.Wszystkie wystąpienia utworzony powinny być widoczne w Eksploratorze po rozwinięciu węzłów.
Definiowanie kształtów w schemacie
Klasy elementów, które są widoczne na diagramie można zdefiniować jako prostokąty, elipsy lub ikony.
Aby zdefiniować klasę elementów, które są wyświetlane jako kształty na diagramie
Definiowanie i testowanie klasy domeny, zgodnie z opisem w Definiowanie klas domeny**.**
Element nadrzędny klasy powinna być klasy głównego.Oznacza to, że powinna być osadzenia relacji między klasą głównego i Nowa klasa domeny.
Element nadrzędny diagramie ma torów, może być klasy domeny, który jest zamapowany na tor.Przed kontynuowaniem tej procedury, zobacz definiowania DSL, który ma torów.
Dodaj klasę kształtu do reprezentowania elementów diagramu modelu.Przeciągnij jeden z następujących narzędzi na diagram definicji DSL:
Geometria kształtu udostępnia prostokąta lub elipsy.
Obraz kształtu Wyświetla obraz podane.
Kształt przedziału jest prostokąt, który zawiera co najmniej jedną listę elementów.
Zmień nazwę klasy kształtu, który pojawi się po prawej stronie diagramu definicji DSL, w obszarze kształty i łączniki.
Definiowanie obrazu, jeśli został utworzony obraz kształtu.
Utwórz plik obrazu w dowolnej wielkości.Formaty BMP, JPEG, GIF i EMF są obsługiwane.
W Eksploratorze rozwiązań należy dodać plik do rozwiązania w obszarze Dsl\Resources.
Wróć do diagramu definicji DSL i wybrać klasę kształt obrazu.
W oknie dialogowym właściwości kliknij obraz właściwości.
W wybierz obraz okna dialogowego kliknij menu rozwijane w obszarze nazwa plikui wybierz obraz.
Dodaj pracowników tekstu do kształtu, aby wyświetlić właściwości domeny.
Aby wyświetlić nazwę lub tytuł elementu modelu, prawdopodobnie należy co najmniej jeden dekoratora tekstu.
Kliknij prawym przyciskiem myszy nagłówek klasy kształtu, wskaż polecenie Dodaj, a następnie kliknij przycisk Dekoratora tekstu.Ustaw nazwę dekoratora, a w zestawie okno właściwości jego pozycji.
Połącz się wszystkie kształty z mapy elementu diagramu do klasy domeny, który powinien być wyświetlany.
Kliknij przycisk mapy elementu diagramu narzędzie, kliknij odpowiednią klasę domeny, a następnie kliknij odpowiednią klasę kształtu.
Mapowania właściwości pracowników tekstu.
Zaznacz wiersz szarego między klasą domeny i Klasa kształtu, która reprezentuje mapę element diagramu.
W szczegóły DSL okna, kliknij przycisk Dekoratora mapy karty.Jeśli nie widzisz szczegóły DSL okna, na widoku menu, wskaż opcję inne okna , a następnie kliknij przycisk szczegóły DSL.Jest często konieczne podnieść górnej części tego okna, aby zobaczyć całą jego zawartość.
Wybierz nazwę dekoratora.W obszarze Właściwość wyświetlania, wybierz nazwę właściwości klasy domeny.Powtórz ten krok dla każdego dekoratora.
Do wyświetlania właściwość elementu pokrewnych, kliknij przycisk Nawigator drzewa listę rozwijaną w obszarze ścieżki, aby wyświetlić właściwości.
Upewnij się, że znacznik pojawia się obok nazwy dekoratora.
Wybierz element przybornika do tworzenia elementów klasy domeny.
W DSL Explorer, rozwiń węzeł edytora węzeł i jego węzły podrzędne.
Kliknij prawym przyciskiem myszy węzeł w obszarze karty przybornika ma taką samą nazwę jak Twoje DSL, na przykład MusicLibrary.Kliknij przycisk dodać narzędzie elementu.
[!UWAGA]
Kliknięcie prawym przyciskiem myszy narzędzia węzła, nie będzie mógł przeglądać narzędzia Dodaj Element.Zamiast tego kliknij węzeł nad nim.
W oknie właściwości nowe narzędzie elementu ustawić klasy do klasy domeny, które ostatnio dodane.
Ustaw podpis i etykietkę narzędzia.
Ustaw ikonę przybornika do ikony, który będzie umieszczany w przybornika.Można ustawić nową ikonę lub ikonę już używana dla innego narzędzia.
Aby utworzyć nową ikonę, otwórz Dsl\Resources w Eksploratora rozwiązań.Skopiuj i Wklej jeden z istniejących plików BMP narzędzie elementu.Zmień wklejonych kopię, a następnie kliknij dwukrotnie, aby go edytować.
Powrót do diagramu definicji DSL, wybierz narzędzie i w oknie dialogowym właściwości kliknij [...] w ikonę przybornika.W wybierz mapy bitowej okno dialogowe, wybierz użytkownika.Plik BMP z menu rozwijanego.
Aby uzyskać więcej informacji, zobacz Właściwości kształtów geometrycznych i Właściwości kształtów obrazu.
Aby przetestować kształtów
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędzi Eksploratora rozwiązań do generowania kodu projektanta DSL.
**Tworzenie i uruchamianie DSL.**Naciśnij klawisz F5 lub CTRL + F5, aby uruchomić nowe wystąpienie klasy Visual Studio w trybie doświadczalnych.W wystąpieniu doświadczalnych Visual Studio, Otwórz lub Utwórz plik, który ma rozszerzenie nazwy pliku z sieci DSL.
Sprawdź, czy element narzędzia na przybornika.
Tworzyć kształty , przeciągając za pomocą narzędzia na diagramu modelu.
Należy sprawdzić, czy jest widoczny każdego tekstu dekoratora, oraz że:
Można ją było edytować, chyba że zostały ustawione jest interfejs użytkownika tylko do odczytu Flaga właściwości domeny.
Podczas edytowania właściwości w oknie dialogowym właściwości lub w dekoratora, innym widoku jest aktualizowana.
Po należy najpierw przetestować kształtu, można dostosować niektóre jego właściwości i dodać kilka innych zaawansowanych funkcji.Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficznego dla domeny.
Definiowanie relacji odwołania
Można zdefiniować relacji odwołania między każdej klasy domeny źródła i każdej klasy domeny docelowej.Relacje odwołania zazwyczaj są wyświetlane na diagramie jako łączniki, które wierszy między kształtami.
Na przykład jeśli albumów muzycznych i artystów są wyświetlane jako kształty na diagramie, można zdefiniować relacji o nazwie ArtistsAppearedOnAlbums łączącą artystów do albumów, na których ma pracy.Zobacz przykład w wartość.
Relacje odwołania można też łączyć elementy tego samego typu.Na przykład w DSL, reprezentujący drzewo rodziny, relacja między rodziców i ich elementy podrzędne jest relacji z osób.
Definiowanie relacji
Kliknij narzędzie relacji odwołania, a następnie kliknij przycisk klasy domeny źródła relacji, a następnie kliknij klasy docelowej domeny.Klasa docelowa może być taka sama jak klasa źródła.
Każda relacja ma dwie role, reprezentowanego przez linię na każdej stronie pola relacji.Możesz wybrać każda rola i ustaw jego właściwości w oknie dialogowym właściwości.
Rozważ zmianę nazwy ról.Na przykład w relacji między osoby i osoby, można zmienić domyślne nazwy elementów nadrzędnych i podrzędnych, Menedżera i podwładnych, nauczyciel i studentów i tak dalej.
Dostosuj Liczebność punktów każdej roli, jeśli jest to konieczne.Każda osoba mieć co najwyżej jeden Manager, należy ustawić liczebności będzie widoczna poniżej etykiety Manager na diagram od 0 do 1.
**Dodaj właściwości domeny do relacji.**Na ilustracji relacji wykonawcy albumu ma właściwość roli.
Set theAllows Duplicatesproperty of the relationship, if more than one link of the same class can exist between the same pair of model elements.Na przykład może umożliwić nauczyciel uczyć więcej niż jeden z zastrzeżeniem tej samej studentów.
Aby uzyskać więcej informacji, zobacz Właściwości relacji domeny i Właściwości ról w domenie.
Zdefiniuj łącznika do wyświetlenia relacji
Łącznik wyświetla linię między dwoma kształtami diagramu modelu.
Przeciągnij łącznik narzędzie na diagram definicji DSL.
Dodaj pracowników tekstu, aby wyświetlić etykiety łącznika.Ustaw ich położenia.Użytkownikowi Przenieś dekoratora tekstu, należy ustawić jej jest ruchoma właściwości.
Użyj mapy elementu diagramu narzędzia, aby połączyć łącznik relacji odwołania.
Mapa elementów diagramu zaznaczone, otwórz szczegóły DSL okna, a następnie otwórz Dekoratora mapy karty.
Zaznacz wszystkie Dekoratora i ustawić Właściwość wyświetlania do właściwości poprawnej domenie.
Upewnij się, że znacznik pojawia się obok każdego elementu pracowników listy.
Zdefiniuj narzędzie konstruktora połączenia
W DSL Explorer okna, rozwiń węzeł edytora węzeł i jego węzły podrzędne.
Kliknij prawym przyciskiem myszy węzeł, który ma taką samą nazwę jak Twoje DSL, a następnie kliknij przycisk Dodaj nowe narzędzie połączenia.
Przy zaznaczonym nowe narzędzie, w oknie dialogowym właściwości:
Ustaw podpis i etykietkę narzędzia.
Kliknij przycisk połączenia konstruktora i wybierz odpowiedni konstruktora dla nowej relacji.
Ustaw ikonę przybornika do ikony, który ma być wyświetlany w przybornika.Można ustawić nową ikonę lub ikonę już używana dla innego narzędzia.
Aby utworzyć nową ikonę, otwórz Dsl\Resources w Eksploratora rozwiązań.Skopiuj i Wklej jeden z istniejących plików BMP narzędzie elementu.Zmień wklejonych kopię, a następnie kliknij dwukrotnie, aby go edytować.
Powrót do diagramu definicji DSL, wybierz narzędzie i w oknie dialogowym właściwości kliknij [...] w ikonę przybornika.W wybierz mapy bitowej okno dialogowe, wybierz użytkownika.Plik BMP z menu rozwijanego.
Aby przetestować relacji odwołania i łącznika
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędzi Eksploratora rozwiązań do generowania kodu projektanta DSL.
**Tworzenie i uruchamianie DSL.**Naciśnij klawisz F5 lub CTRL + F5, aby uruchomić nowe wystąpienie klasy Visual Studio w trybie doświadczalnych.W wystąpieniu doświadczalnych Visual Studio, Otwórz lub Utwórz plik, który ma rozszerzenie nazwy pliku z sieci DSL.
Należy sprawdzić, czy narzędzie połączenia jest widoczny na przybornika.
Tworzyć kształty , przeciągając za pomocą narzędzia na diagramu modelu.
Utwórz połączenia między kształtami.Kliknij narzędzie łącznik, kliknij kształt, a następnie kliknij przycisk innego kształtu.
**Upewnij się, że nie można utworzyć połączenia między nieodpowiedni klasy.**Na przykład w przypadku swoje relacji między albumów i artystów, należy sprawdzić, czy nie można połączyć artystów artystów.
Sprawdź poprawność Liczebność punktów. Na przykład Sprawdź, czy nie można nawiązać połączenia osoby więcej niż jednego menedżera.
Należy sprawdzić, czy jest widoczny każdego tekstu dekoratora, oraz że:
Można ją było edytować, chyba że zostały ustawione jest interfejs użytkownika tylko do odczytu Flaga właściwości domeny.
Podczas edytowania właściwości w oknie dialogowym właściwości lub w dekoratora, innym widoku jest aktualizowana.
Po należy najpierw przetestować łącznika, można dostosować niektóre jego właściwości i dodać kilka innych zaawansowanych funkcji.Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficznego dla domeny.
Definiowanie kształtów, które zawierają listy: przedziału kształtów
Kształt przedziału zawiera co najmniej jeden listy elementów.Na przykład w DSL biblioteki utwory muzyczne, można kształty przedziału do reprezentowania utwory muzyczne albumów.W przypadku każdego albumu znajduje się lista utworów.
W metodzie najprostszym osiągnięcia w tym celu w definicji DSL definiujemy jednej klasy domeny dla kontenera i jednej klasy domeny dla każdej listy.Klasa jest zamapowana na kształt Przedział.
Aby uzyskać więcej informacji, zobacz Właściwości kształtów przedziałów.
Aby zdefiniować kształt przedziału
Utwórz kontener klasy domeny.Kliknij przycisk osadzanie relacji narzędzie, klasa głównego modelu, a następnie kliknij przycisk pustą część diagramu definicji DSL.Spowoduje to utworzenie klasy domeny o nazwie albumu w przykładzie wartość.
Możesz również zamiast osadzenia w tej klasie katalogu głównego, można osadzić kontenera w klasie domeny, który jest zamapowany na tor.
Dodaj właściwość domeny, takie jak nazwa klasy i ustawić jej jest nazwa elementu Flaga w oknie dialogowym właściwości.
Utworzenie klasy domeny elementu listy.Kliknij przycisk osadzanie relacji narzędzie, kliknij odpowiednią klasę kontenera (albumu), a następnie kliknij przycisk pustą część diagramu.Spowoduje to utworzenie klasy domeny o nazwie utworu w przykładzie wartość.
Dodaj właściwość domeny, takie jak tytuł do klasy i ustawić jej jest nazwa elementu flagi.
Dodaj inne właściwości domeny.
Dodaj innego klasy domeny dla każdej listy, która ma być wyświetlana lista elementu.
Aby utworzyć kilka typów element na liście, Utwórz klasy, które dziedziczą z klasy listy.Nadać klasy Lista ogólna przez ustawienie jego modyfikator dziedziczenia.
Na przykład klasyczny muzyka mają być sortowane według kompozytora zamiast wykonawcy, należy można utworzyć dwa podklasy utworu, ClassicalSong i NonClassicalSong.
Utwórz kształt przedziału.Przeciągnij z kształt przedziału narzędzie na diagram definicji DSL.
Dodaj dekoratora tekstu i ustaw jego nazwy.
Dodaj pomieszczenie i ustaw jego nazwy.
Aby ukryć przedziałów listy, kliknij prawym przyciskiem myszy klasy shape przedziału użytkownika, wskaż polecenie Dodaj, a następnie kliknij przycisk Dekoratora Rozwiń/Zwiń.W oknie dialogowym właściwości ustaw pozycję dekoratora.
Kliknij przycisk mapy elementu diagramu narzędzie, klasa domeny, a następnie kliknij przycisk kształt przedziału.
Wybierz łącze mapy elementu diagramu między klasą domeny i kształtu.W szczegóły DSL okna:
Kliknij przycisk pracowników karty.Kliknij nazwę dekoratora, a następnie wybierz odpowiedni element w obszarze wyświetlania właściwości.Upewnij się, że znacznik pojawia się obok nazwy dekoratora.
Kliknij przycisk mapy przedziału karty.
Kliknij nazwę przedziału.
W obszarze ścieżka kolekcji elementów wyświetlane, przejdź do listy klasa elementu (utworu).Kliknij strzałkę listy rozwijanej, aby użyć narzędzia Nawigator.
W obszarze wyświetlania właściwości, wybierz właściwość, która powinna być wyświetlana na liście.W przykładzie jest tytuł.
[!UWAGA]
Przy użyciu pola ścieżki na mapie Dekoratora i przedziału Mapuj pola, można tworzyć bardziej złożonych relacji między klasy domeny i kształt Przedział.
Aby zdefiniować narzędziem do tworzenia kształtu
Wybierz element przybornika do tworzenia elementów klasy domeny.
W DSL Explorer, rozwiń węzeł edytora węzeł i jego węzły podrzędne.
Kliknij prawym przyciskiem myszy węzeł w obszarze karty przybornika ma taką samą nazwę jak Twoje DSL, na przykład MusicLibrary.Kliknij przycisk dodać narzędzie elementu.
[!UWAGA]
Kliknięcie prawym przyciskiem myszy narzędzia węzła, nie będzie mógł przeglądać narzędzia Dodaj Element.Zamiast tego kliknij węzeł nad nim.
W oknie właściwości nowe narzędzie elementu ustawić klasy do klasy domeny, które ostatnio dodane.
Ustaw podpis i etykietkę narzędzia.
Ustaw ikonę przybornika do ikony, który będzie umieszczany w przybornika.Można ustawić nową ikonę lub ikonę już używana dla innego narzędzia.
Aby utworzyć nową ikonę, otwórz Dsl\Resources w Eksploratora rozwiązań.Skopiuj i Wklej jeden z istniejących narzędzie elementu.Pliki BMP.Zmień wklejonych kopię, a następnie kliknij dwukrotnie, aby go edytować.
Powrót do diagramu definicji DSL, wybierz narzędzie i w oknie dialogowym właściwości kliknij [...] w ikonę przybornika.W wybierz mapy bitowej okna dialogowego Wybierz plik BMP z menu rozwijanego.
Aby przetestować kształt przedziału
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędzi Eksploratora rozwiązań do generowania kodu projektanta DSL.
**Tworzenie i uruchamianie DSL.**Naciśnij klawisz F5 lub CTRL + F5, aby uruchomić nowe wystąpienie klasy Visual Studio w trybie doświadczalnych.W wystąpieniu doświadczalnych Visual Studio, Otwórz lub Utwórz plik, który ma rozszerzenie nazwy pliku z sieci DSL.
Należy sprawdzić, czy to narzędzie jest widoczny na przybornika.
Przeciągnij narzędzie na diagramu modelu.Kształt jest tworzone.
Sprawdź, czy nazwa elementu jest wyświetlany, a następnie automatycznie ma ustawioną wartość domyślną.
Kliknij prawym przyciskiem myszy nagłówek nowy kształt, a następnie kliknij przycisk Dodaj swojego elementu listy. W tym przykładzie polecenie jest dodać utworu.
Należy sprawdzić, czy element jest widoczny na liście i czy jest nową nazwę.
Kliknij jeden z elementów listy, a następnie należy sprawdzić, czy okno właściwości.Powinno być widoczne właściwości elementów listy.
Otwórz Eksploratora języka.Upewnij się, można wyświetlić węzły kontener z listy węzłów elementów w.
Po należy najpierw przetestować kształt przedziału, można dostosować niektóre z jego właściwości i dodać kilka innych zaawansowanych funkcji.Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficznego dla domeny.
Łącze odnośnika są wyświetlane w przedziale
Zazwyczaj element, który można wyświetlić w przedziale jest elementem podrzędnym elementu, który jest reprezentowany przez kształt Przedział.Jednak czasem, użytkownik może zostać wyświetlony element, który jest z nim połączony z relacji.
Na przykład firma Microsoft można dodać drugiego przedziału do AlbumShape, który wyświetla listę artystów, które są połączone z albumu.
W takim przypadku powinien być wyświetlany przedział łącze, a nie do elementu.Dzieje się tak dlatego, gdy użytkownik wybiera element w przedziale i naciśnie klawisz DELETE, ma łącze ma zostać usunięty, nie występujących w odwołaniu element.
Niemniej jednak może mieć nazwę elementu, którego dotyczy odwołanie, pojawiają się w przedziale.
W poniższej procedurze przyjęto, że utworzono już klasy domeny, relacja odwołania, kształt przedziału i mapę elementów diagramu, zgodnie z opisem wcześniej w tej sekcji.
Aby wyświetlić łącza w przedziale
Dodaj pomieszczenie na kształt przedziału.Na diagramie definicji DSL, kliknij prawym przyciskiem myszy klasę kształt przedziału, wskaż polecenie Dodaj, a następnie kliknij przycisk przedziału.
Ustaw ścieżka kolekcji elementów wyświetlane do przejdź do łącza, a nie jej elementu docelowego.Kliknij menu rozwijane i umożliwia wybranie relacji odwołania zamiast jego docelowy w widoku drzewa.W przykładzie relacji jest ArtistAppearedOnAlbums.
Ustaw ścieżki do wyświetlania właściwości do przechodzenia z łącze do elementu docelowego.W przykładzie jest wykonawcy.
Ustaw wyświetlania właściwości do odpowiednich właściwości elementu docelowego, na przykład nazwę.
Przekształć wszystkie szablony, tworzenie i uruchamianie DSL i otworzyć model testu.
Diagramu modelu tworzenia klasy odpowiedniego kształtu, ustawianie ich nazw i Utwórz łącze między nimi.W kształcie Przedział powinien pojawiać się nazw połączonych elementów.
Wybierz łącze lub element w kształcie Przedział.Zarówno łącze, jak i element powinien zniknąć.
Definiowanie portów w granicach innego kształtu
Port jest kształtu, który znajduje się w granicach innego kształtu.
Porty umożliwia także udostępnić punkt stałego połączenia innego kształtu, do którego użytkownik można rysować łączniki.W takim przypadku można dokonać kształt portu przezroczysty.
Aby zobaczyć przykład, który używa portów, wybierz opcję Diagram składników szablonu podczas tworzenia nowego rozwiązania DSL.W tym przykładzie przedstawiono główne punkty, które można wziąć pod uwagę podczas definiowania portów:
Istnieje domeny klasę, która reprezentuje kontener portów, Component.
Istnieje domeny klasę, która reprezentuje portów.W tym przykładzie jest to ComponentPort.
Ma relację osadzenia kontenera klasy domeny do klasy domeny portu.Aby uzyskać więcej informacji, zobacz Definiowanie klas domeny.
Różne rodzaje port mieszanie na opakowaniu, należy można utworzyć podklasy klasy domeny portu.W tym przykładzie InPort i OutPort Dziedzicz ComponentPort.
Kontener klasy domeny mogą być mapowane na dowolny rodzaj kształtu.W tym przykładzie jest ComponentShape.Aby uzyskać więcej informacji, zobacz kształtów definiowanie.
Port klasy domeny są mapowane na port kształtów.Możesz mapowania klasy pochodne oddzielić klasy kształtów portu lub mapowania klasy podstawowej na klasy shape portów.
W innych aspektach kształtów port działać zgodnie z opisem w kształtów definiowanie.
Aby uzyskać więcej informacji, zobacz Właściwości kształtów portu.
Definiowanie DSL, który ma torów
Dziedziny odpowiedzialności widoczne są poziomy lub pionowy partycji diagramu.Każdy tor odnosi się do elementu modelu.Definicję DSL wymaga jednej klasy domeny dla elementów tor.
Najlepszy sposób, aby utworzyć DSL o torów jest utworzenie nowego rozwiązania DSL i wybierz szablon przepływu zadań rozwiązania.W definicji DSL Klasa aktora jest zamapowana na tor klasy domeny.Zmień nazwę tego i innych klas dostosowanych swój projekt.
Aby dodać klasę, która będzie wyświetlana jako kształt wewnątrz tor, tworzyć osadzanie relacji między klasą tor i nowej klasy.Użytkownicy będą mogli przeciągnij elementy z jednego tor, ale każdy element zawsze będzie w szczególności tor.W szablonie przepływu zadań rozwiązania FlowElement jest elementem podrzędnym klasy tor.
Aby dodać klasę, która będzie wyświetlana jako kształt niezależnie od torów, tworzyć osadzanie relacji między klasą głównego i nowej klasy.Użytkownicy będą mogli umieścić tych kształtów w dowolnym miejscu diagramu, w tym granic torów i poza torów.W szablonie zadanie przepływu rozwiązań komentarz jest elementem podrzędnym klasy głównego.
Aby uzyskać więcej informacji, zobacz Właściwości torów.
Dodawanie typy właściwości
Wyliczenia domeny i literały
Wyliczenie domeny jest typem z kilku wartości literału.
Aby dodać wyliczenia domeny, kliknij prawym przyciskiem myszy modelu w folderze głównym DSL Explorer , a następnie kliknij przycisk Dodaj nowe wyliczenie domeny.Element pojawi się w DSL Explorer pod typy domeny węzła.Ten element nie jest wyświetlana na diagramie.
Aby dodać Literały wyliczeniowe do wyliczenia domeny, kliknij prawym przyciskiem myszy wyliczenia domeny w DSL Explorer , a następnie kliknij przycisk Dodaj nowe wyliczenie literału.
Domyślnie właściwość, która ma typ wyliczenia można podać tylko jedna z wartości wyliczenia w danym czasie.Użytkownicy i programistów, aby można było ustawić dowolną kombinację wartości - "pole bitowe" - ustawić IsFlags właściwości wyliczenia.
Typy zewnętrznego
Po ustawieniu typ właściwości domeny, jeśli nie zostanie znaleziony typ ma typu listy rozwijanej, można dodać typu zewnętrznej.Na przykład można dodać System.Drawing.Color typu na liście.
Aby dodać typ, kliknij prawym przyciskiem myszy modelu w Eksploratorze DSL katalogu głównego, a następnie kliknij dodać nowego typu zewnętrznej.W oknie dialogowym właściwości ustawiania nazwy Color i w obszarze nazw System.Drawing.Pojawia się w Eksploratorze DSL w ramach tego typu typy domeny.Można ją, jeśli ustawiony typ właściwości domeny.
Dostosowywanie DSL
Przy użyciu techniki opisane w tym temacie, można szybko utworzyć DSL schematycznego notacji, czytelnej postaci XML i podstawowe narzędzia niezbędne do generowania kodu i inne artefakty.
Istnieją dwie metody rozszerzenia definicji DSL:
Dostosowywanie DSL przy użyciu więcej funkcji definicji DSL.Na przykład można dokonać pojedynczego łącznik, który można utworzyć kilka typów łącznika, a można kontrolować reguł, przez które usunięcie jednego elementu również usuwa elementy związane z.Te techniki przeważnie są osiągane przez ustawienie wartości w definicji DSL, a niektóre wymagają zaledwie kilku wierszach kodu programu.
Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficznego dla domeny.
Rozszerzenia narzędzi modelowania przy użyciu kodu programu, aby uzyskać bardziej zaawansowane efekty.Na przykład można utworzyć poleceń menu, które można zmienić modelu i narzędzia, które integrują się co najmniej dwa DSLs.VMSDK zaprojektowane z myślą o ułatwiają integrację rozszerzenia z kodu, który jest generowany w definicji DSL.Aby uzyskać więcej informacji, zobacz Pisanie kodu pod kątem dostosowywania języka specyficznego dla domeny.
Zmiana definicji DSL
Podczas tworzenia dowolnego elementu w definicji DSL, wiele wartości domyślne są ustawiane automatycznie.Po ustawieniu, można je zmienić.Upraszcza to rozwoju DSL, umożliwiając dla dostosowania zaawansowanego.
Na przykład można mapować kształt do elementu, ścieżka elementu nadrzędnego mapowania jest ustawiana automatycznie zgodnie osadzenia relacji klasy domeny.Jednak zmiana później osadzenia relacji, ścieżka elementu nadrzędnego pozostają niezmienione automatycznie.
Dlatego należy pamiętać, że zmiana niektóre relacje w swojej definicji DSL, nie jest niczym niezwykłym błędów podawane podczas zapisywania definicji lub gdy przekształcasz wszystkie szablony.Większość tych błędów można łatwo rozwiązać.Kliknij dwukrotnie raport o błędach, aby zobaczyć lokalizację błędu.
Zobacz też Porady: zmienianie przestrzeni nazw języka specyficznego dla domeny.
Rozwiązywanie problemów
Poniższa tabela zawiera listę najbardziej typowych problemów, napotkanych podczas projektowania DSL, wraz z programem sugestie dotyczące ich rozwiązania.Więcej porad jest dostępna w Extensibililty Forum narzędzia wizualizacji.
Problem |
Sugestia |
---|---|
Zmiany dokonane w pliku definicji DSL nie skutkują. |
Kliknij przycisk Transform wszystkie szablony na pasku narzędzi powyżej Eksploratora rozwiązań, a następnie odbudowy rozwiązanie. |
Kształty wyświetlić nazwę dekoratora zamiast wartości właściwości. |
Skonfiguruj mapowanie dekoratora.W schemacie definicji DSL kliknij map elementów diagramu, które jest szara linia między klasą domeny i klasy shape. Otwórz szczegóły DSL okna.Jeśli nie widzisz, w menu Widok, wskaż polecenie inne okna, a następnie kliknij przycisk szczegóły DSL. Kliknij przycisk Dekoratora mapy karty.Wybierz nazwę dekoratora.Upewnij się, że zaznaczone jest pole obok niej.W obszarze Właściwość wyświetlania, wybierz nazwę właściwości domeny. Aby uzyskać więcej informacji, zobacz kształty na diagramie. |
W Eksploratorze DSL nie można dodać do kolekcji.Na przykład po mogę prawym przyciskiem myszy narzędzia istnieje żadne polecenie "Dodaj narzędzie" w menu. W Eksploratorze dla mojego DSL nie można dodać elementu do listy. |
Kliknij prawym przyciskiem myszy element powyżej węzeł, który jest tworzone.Jeśli chcesz dodać do listy, polecenia Dodaj jest nie należy do węzła listy, ale w jej właścicielem. |
Po utworzeniu klasy domeny, ale nie można utworzyć wystąpienia w Eksploratorze języka. |
Każdej klasy domeny, z wyjątkiem główny musi być elementem docelowym osadzenia relacji. |
W Eksploratorze dla mojego DSL elementy są wyświetlane tylko w przypadku ich nazwy typu. |
W definicji DSL, wybierz właściwość domeny klasy i we właściwościach okna, ustaw jest nazwa elementu na wartość true. |
Moje DSL zawsze otwiera się w edytorze XML. |
Możliwe, ponieważ wystąpił błąd podczas odczytu pliku.Jednak nawet, po rozwiązaniu tego błędu, należy jawnie zresetować edytora swoje projektantów DSL. Right-click the project item, click Open With and select YourLanguageDesigner (Default). |
Przybornika Moje DSL nie pojawia się po zmianie nazwy zestawu. |
Sprawdzać i aktualizować DslPackage\GeneratedCode\Package.tt uzyskać więcej informacji, zobacz Porady: zmienianie przestrzeni nazw języka specyficznego dla domeny. |
Nie ma przybornika Moje DSL, ale nie zostały zmienione nazwy zestawu. Lub pojawia się komunikat z raportowania błędów można załadować rozszerzenia. |
Resetowanie doświadczalnych wystąpienie i odbudowy rozwiązanie.
|
Zobacz też
Zadania
Tworzenie języka specyficznego dla domeny opartego na formularzach systemu Windows