Jak definiować języka specyficzne dla domeny
Aby zdefiniować języka specyficzne dla domeny (DSL), należy utworzyć Visual Studio roztwór z szablonu.Kluczowa część roztworu jest diagramu definicji DSL jest przechowywany w DslDefinition.dsl.Definicja DSL definiuje klasy i kształty DSL.Po zmodyfikowaniu i dodawania do tych elementów, można dodać kod programu, aby dostosować DSL bardziej szczegółowo.
Jeśli korzystasz z DSLs, firma Microsoft zaleca pracy poprzez DSL Tools Lab, który można znaleźć w tej witrynie: Visualizaton i modelowania SDK
W tym temacie
Wybierając rozwiązanie szablonu
Desenie określających DSL
Klasy Element modelu
Kształty na diagramie
Odniesienia i złącza
Kształty, które zawierają listy: kształtów Pomieszczenie
Porty na granicy z innym kształtem
Dziedziny odpowiedzialności
Typy właściwości
Dostosowywanie linii DSL
Rozwiązywanie problemów
Wybierając rozwiązanie szablonu
Aby zdefiniować DSL, musisz mieć zainstalowane następujące składniki:
Visual Studio |
|
Visual Studio SDK |
|
Visual Studio, wizualizacji i modelowanie SDK |
Aby utworzyć nowy język specyficzne dla domeny, użytkownik utworzy nowy Visual Studio roztwór za pomocą szablonu Projekt języka specyficzne dla domeny.
Aby utworzyć rozwiązanie DSL
Tworzenie rozwiązania z Domeny specyficzne dla języka szablon, który można znaleźć w Inne projektu typów na rozszerzalności w Nowy projekt okno dialogowe.
Po kliknięciu przycisku OK, Specyficzne dla domeny, Kreator języka otwiera i wyświetla listę rozwiązań DSL szablonu.
Kliknij, aby wyświetlić opis każdego szablonu.Wybierz rozwiązanie, które najbardziej przypomina chcesz utworzyć.
Każdy szablon DSL określa podstawowe pracy DSL.Będzie edytować ten DSL do własnych wymagań.
Kliknij przycisk każdej próbki, aby uzyskać więcej informacji.
Wybierz Przepływ zadań do tworzenia DSL, która ma torów.Dziedziny odpowiedzialności widoczne są pionowe lub poziome partycje diagramu.
Wybierz Modeli składnika do tworzenia DSL, która ma portów.Porty są małych kształtów na krawędzi większy kształt.
Wybierz Diagramy klas do definiowania DSL, który ma kształty przedział.Kształty przedział zawierają listę elementów.
Wybierz Minimalne języka w innych przypadkach lub jeżeli nie masz pewności.
[!UWAGA]
Aby utworzyć diagram klasy lub diagram składników, należy rozważyć przy użyciu modeli UML.Narzędzia do modelowania UML stanowią zbiór diagramów, które są zintegrowane wokół jednego modelu.Są rozszerzalną i może zostać zintegrowany z linii DSL za pomocą ModelBus.Aby uzyskać więcej informacji, zobacz Modele projektowania dla projektowania oprogramowania.
Wybierz Projektant WinForm minimalne lub Projektant WPF minimalne do tworzenia DSL, wyświetlanego na powierzchni Windows Forms lub WPF.Należy pisać kod, aby zdefiniować edytor.Aby uzyskać więcej informacji zobacz następujące tematy:
Tworzenie Windows Forms opartych na domenie specyficzne dla języka
Tworzenie języka opartego na platformie WPF specyficzne dla domeny
Wprowadź rozszerzenie nazwy pliku dla linii DSL w odpowiedniej strony w kreatorze.Jest to rozszerzenie, które będzie używać plików zawierających wystąpień linii DSL.
Wybierz rozszerzenie nazwy pliku, który nie jest skojarzony z dowolnej aplikacji w komputerze lub w dowolnym komputerze, na którym chcesz zainstalować modem DSL.Na przykład docx i htm byłby niedopuszczalny pliku rozszerzeń nazw.
Kreator wyświetli ostrzeżenie, jeśli rozszerzenie, które zostały wprowadzone, jest używany jako DSL.Rozważ rozszerzenie nazwy pliku innej.Można także zresetować Visual Studio SDK doświadczalnych instancji, aby wyczyścić stare projektanci doświadczalnych.Kliknij przycisk uruchomić, kliknij przycisk Wszystkie programy, Zestawu SDK programu Microsoft Visual Studio 2010, Narzędzia, a następnie zresetować instancji programu Microsoft Visual Studio 2010 doświadczalnych.
Można dostosować ustawienia na innych stronach lub pozostawić wartości domyślne.
Kliknij przycisk Zakończenie.
Kreator tworzy roztworu, który zawiera dwa lub trzy projekty i generuje kod z definicji DSL.
Interfejs użytkownika teraz podobna do poniższej ilustracji.
Roztwór ten definiuje język określonej domeny.Aby uzyskać więcej informacji, zobacz Omówienie specyficzne dla domeny język interfejsu użytkownika narzędzia.
Roztworu badanego
Szablon rozwiązanie pracy DSL, które można modyfikować lub użyć, ponieważ jest on.
Aby przetestować rozwiązanie, naciśnij klawisz F5 lub CTRL + F5.Nowe wystąpienie Visual Studio zostanie otwarty w trybie doświadczalnych.
W nowych instancji Visual Studio, w oknie Solution Explorer, należy otworzyć przykładowy plik.Otwiera się jako diagramu z przybornika.
Jeśli uruchomienia rozwiązania, które zostały utworzone z Minimalne języka szablonu, Twój doświadczalnych Visual Studio będą podobne do następujących:
Poeksperymentuj z narzędzia.Tworzenie elementów i ich połączenia.
Zamknij doświadczalnych wystąpienie Visual Studio.
[!UWAGA]
Po zmodyfikowaniu DSL już będzie Zobacz kształty na próbce testowania pliku.Jednakże będzie mógł tworzyć nowych elementów.
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 powinny być poprawne nazwy CLR, bez spacji i znaków przestankowych.
Jest to szczególnie przydatne do tych klas:
Główna klasa pojawia się w lewym górnym diagram definicji DSL pod klasy i relacje.Zmień nazwę nazwą inną niż modem DSL.Na przykład DSL, o nazwie MusicLibrary może być klasą główną o nazwie Muzyka.
Klasa diagramu pojawia się w prawej dolnej części diagramu DSL definicji w Elementów diagramu kolumny.Może zajść przewiń w prawo, aby go wyświetlić.Zazwyczaj nosi YourDslDiagram.
Jeśli użyto Przepływ zadań szablon i chcesz, aby tworzyć diagramy z dziedziny, przechowywać i zmień nazwę klasy domeny aktor i kształt ActorSwimlane.
Usunięcie lub zmiana nazwy innych klas do własnych wymagań.
Desenie określających DSL
Zaleca się opracowanie DSL przez dodanie lub dostosowując jedną lub dwie funkcje w czasie.Dodanie nowej funkcji, uruchom modem DSL i ją przetestować, a następnie dodaj jeden lub dwa więcej funkcji.Typową cechą modem DSL może wyglądać następująco:
Klasa domeny, osadzania relacji, która łączy element w modelu, kształt, wymagane do wyświetlania elementów tej klasy na diagram, a narzędzie element, który pozwala użytkownikom na tworzenie elementów.
Właściwości domeny klasy domeny i dekoratorów, które wyświetlają je na kształcie.
Relacja odniesienia i łącznik, który wyświetla go na diagram i narzędzie łącznik, który pozwala użytkownikom tworzyć łącza.
Dostosowania, który wymaga kod programu, takie jak ograniczenie sprawdzania poprawności lub polecenia menu.
Następujące sekcje opisują jak skonstruować rodzaje najbardziej przydatne funkcje DSL.Istnieje wiele innych wzorców, z którymi mogą być skonstruowane DSL, ale są one używane najczęściej.
[!UWAGA]
Po dodaniu funkcji, nie zapomnij kliknij Transform wszystkie szablony na pasku narzędzi Solution Explorer przed rozpoczęciem tworzenia i uruchamiania linii DSL.
Na poniższym rysunku pokazano częścią klasy i relacje, DSL, który jest używany jako przykład w tym temacie.
Na następnej ilustracji jest przykład modelu to DSL:
[!UWAGA]
"Model" odnosi się do wystąpienia modem DSL, że użytkownicy tworzą i zazwyczaj jest wyświetlana jako diagramu.W tym temacie omówiono diagramu definicji DSL i diagramy modelu, które pojawiają się, gdy używany jest modem DSL.
Definiowanie klas domeny
Domeny klasy reprezentują koncepcje linii DSL.Wystąpienia są elementy modelu.Na przykład w MusicLibrary DSL może mieć klas domeny o nazwie utworze i albumie.
Aby utworzyć klasę domeny, można przeciągnąć z Klasy domeny o nazwie narzędzie do diagramu, a następnie zmień nazwę klasy.
Aby uzyskać więcej informacji, zobacz Właściwości klasy domeny.
Tworzenie relacji osadzania dla poszczególnych klas domeny
Każdej klasy domeny, z wyjątkiem klasy główny musi być cel co najmniej jedna relacja osadzania lub musi dziedziczyć z klasy docelowej relacji z osadzania.
W modelu każdy element modelu jest węzeł w jedno drzewo osadzania relacje.Źródłowe i docelowe osadzania relacji są często nazywane nadrzędne i podrzędne.
Zaznaczenia nadrzędnego dla klasy domeny zależy od sposobu jego elementy okres istnienia klucza zależy od innych elementów.Usunięcie węzła drzewa jego poddrzewa jest zwykle również usunięte.Klasy elementów, które mają samodzielnej egzystencji dlatego są osadzane bezpośrednio pod główna klasa.
Zazwyczaj jeżeli można wyświetlić elementu wewnątrz innego elementu, chcesz wskazać relacji właściciela.W takim przypadku najbardziej odpowiedniej klasie nadrzędnej jest klasa kontenera.Wyjątkiem jest, gdy element, który Zobacz wewnątrz kontenera jest faktycznie tylko łącze odwołanie do elementu niezależnych.W takim przypadku usunięcie kontenera powoduje usunięcie odniesienia, ale nie jego docelowy.
W modelach definicji DSL, opisane w tym temacie Zakładamy będzie, że elementy wyświetlane wewnątrz kontenera zostaną usunięte po usunięciu kontenera.Bardziej złożone systemy są możliwe i można osiągnąć poprzez określenie reguł.
Sposób wyświetlania elementu |
Klasa nadrzędna (osadzania) |
Przykład w szablonie roztwór DSL |
---|---|---|
Kształtów na diagramie. Tor. |
Główna klasa DSL. |
Język Minimal. Przepływ zadań: Klasa aktora. |
Kształt w tor. |
Klasa domeny elementów, które są wyświetlane jako torów. |
Przepływ zadań: Zadania klasy. |
Element na liście kształtu, gdy element zostanie usunięty, jeśli pojemnik jest usuwany. Port na krawędzi kształtu. |
Klasa domeny, który jest mapowany do kształtu kontenera. |
Diagram klasy: atrybut klasy. Diagram składników: Port klasy. |
Pozycja na liście nie usunięta, jeśli pojemnik jest usuwany. |
Główna klasa DSL. Lista zawiera odwołanie łącza. |
|
Bezpośrednio wyświetlane. |
Klasa, która stanowi część. |
W przykładzie biblioteka utworów muzycznych albumy są wyświetlane jako prostokąty, w których są wyświetlane tytuły utworów.Dlatego nadrzędny Album jest główna klasa muzyki i nadrzędny Song album.
Aby utworzyć klasę domeny i osadzanie ich w tym samym czasie, kliknij Osadzanie relacji narzędzie, a następnie kliknij przycisk klasy nadrzędnej, a następnie kliknij pustą część diagramu.
Jest nie zazwyczaj konieczne do dostosowania nazwę relacji osadzania oraz jego ról, ponieważ będą automatycznie śledzić nazwy klasy.
Aby uzyskać więcej informacji, zobacz Właściwości relacji domen i Właściwości domeny role.
[!UWAGA]
Osadzanie nie jest taka sama, jak dziedziczenie.Od rodziców dzieci w relacji osadzania nie dziedziczą funkcje.
Dodawanie właściwości domeny w każdej klasy domeny
Właściwości domeny przechowywania wartości.Przykładami są: nazwa, tytuł, Data publikacji.
Kliknij przycisk Właściwości domeny w 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 żądany typ nie znajdują się na liście rozwijanej, zobacz Dodawanie typów właściwości.
Właściwość Nazwa elementu. Wybierz właściwość domeny używany do identyfikowania elementy w Eksploratorze języka.Na przykład w klasie domeny utworu, że można wybrać właściwości Nazwa domeny.W Właściwości okno, ustawić Jest nazwą elementu do true.
Tworzenie klas pochodnych określonej domeny
Klasa domeny mają wariantów, które dziedziczą swoje właściwości i relacji, należy utworzyć klasy, które dziedziczą z niego.Na przykład Album może mieć pochodne klasy WMA i MP3.
Tworzenie przy użyciu klasy pochodne Domeny klasy narzędzia.
Kliknij przycisk dziedziczenie narzędzie, kliknij w klasie pochodnej, a następnie kliknij klasy podstawowej.
Należy wziąć pod uwagę ustawienie Modyfikator dziedziczenie z klasy podstawowej do abstrakcyjna.Jeśli myślisz, może potrzebować wystąpień klasy podstawowej, rozważ zamiast tworzenia oddzielnego uzyskane klasy dla nich.
Klasy pochodne dziedziczą właściwości i ról ich podstawowych klas.
Zawsze panuje porządek Diagram definicji DSL
Podczas dodawania relacji niektórych klas pojawią w więcej niż jednym miejscu.Aby zmniejszyć liczbę występy i szersze diagramu, kliknij prawym przyciskiem myszy klasy docelowej relacji, a następnie kliknij Tutaj doprowadzić drzewa.Odwrotny efekt, kliknij prawym przyciskiem klasy docelowej relacji i kliknij przycisk Split drzewa.Nie ma tych poleceń menu, upewnić się, że zaznaczone jest tylko klasy domeny.
Za pomocą klawiszy CTRL + STRZAŁKA w górę i CTRL + STRZAŁKA w dół przenosić klasy domeny i klasy shape.
Test klas domeny
Aby przetestować nowych klas domeny
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędziowym panelu Solution Explorer 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 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 linii DSL.
Otwórz Eksploratora. Na stronie diagramu jest okna explorer języka zazwyczaj o nazwie YourLanguage Explorer.Jeśli to okno nie jest widoczny, może być na karcie pod spodem Solution Explorer.Jeśli nie możesz znaleźć go, na widoku menu, wskaż Other Windows, a następnie kliknij przycisk YourLanguageExplorer.
Programu explorer przedstawia widok drzewa modelu.
Tworzenie nowych elementów. Kliknij prawym przyciskiem myszy węzeł główny na górze, a następnie kliknij przycisk Dodaj nowyYourClass.
Nowe wystąpienie klasy pojawia się w Twoim języku Explorer.
Sprawdź, czy każde wystąpienie ma inną nazwę, podczas tworzenia nowych wystąpień.To nastąpi tylko wtedy, jeśli została wybrana opcja Jest nazwą elementu flagę na właściwości domeny.
Sprawdź właściwości domeny. Z instancją klasy zaznaczone inspekcji okno właściwości.Powinien on Pokaż właściwości domeny, które zdefiniowane w klasie tej domeny.
Zapisz plik, zamknij go i ponownie je otwórz.Wszystkie wystąpienia utworzony powinien być widoczny w Eksploratorze, po rozwinąć węzły.
Definiowanie kształty na diagramie
Klasy elementów, które pojawiają się na diagramie można zdefiniować jako prostokątów, elips lub ikony.
Aby zdefiniować klasę elementów, które są wyświetlane jako kształty na diagramie
Definiowanie i przetestować klasy domeny, jak opisano w Definiowanie klas domeny**.**
Nadrzędne klasy powinny być klasy katalogu głównego.Oznacza to, że powinny być osadzania stosunek główna klasa i klasa nowej domeny.
Jeśli diagram torów, nadrzędny może być klasa domeny, który jest mapowany na tor.Przed kontynuowaniem tej procedury, zobacz Definiowanie DSL, która ma torów.
Dodawanie klasy shape do reprezentowania elementów na diagramie modelu.Przeciągnij od jednego z następujących narzędzi na diagram definicji DSL:
Geometria kształtu dostarcza prostokąta lub elipsy.
Obraz kształtu Wyświetla obraz, który można dostarczyć.
Kształt przedziału jest prostokąt, który zawiera jedną lub kilka list elementów.
Zmień nazwę klasy shape, która zostanie wyświetlona po prawej stronie diagramu definicji DSL, kształtów i łączników.
Zdefiniowanie obrazu, jeśli utworzony kształt obrazu.
Utwórz plik obrazu o dowolnej wielkości.Obsługiwane są formaty BMP, JPEG, GIF i EMF.
W oknie Solution Explorer należy dodać plik do roztworu w Dsl\Resources.
Powróć do diagramu definicji DSL i wybierz opcję Nowa klasa shape obrazu.
W oknie dialogowym właściwości kliknij przycisk obrazu właściwości.
W Wybierz obraz okna dialogowego kliknij menu rozwijane pod nazwę plikui wybierz obraz.
Dodaj dekoratorów tekst do kształtu, aby wyświetlić właściwości domeny.
Aby wyświetlić nazwę lub tytuł elementu modelu, prawdopodobnie trzeba będzie co najmniej jeden dekorator tekstu.
Kliknij prawym przyciskiem myszy nagłówek klasy shape, wskaż polecenie Dodaj, a następnie kliknij przycisk Dekorator tekst.Ustaw nazwę dekorator i w zestawie okno właściwości jego stanowisko.
Połącz kształt każdego z mapą elementu diagramu do klasy domeny, który powinien być wyświetlany.
Kliknij przycisk Mapę elementu diagramu narzędzie, a następnie kliknij klasę domeny, a następnie kliknij klasy shape.
Mapowanie właściwości do dekoratorów tekstu.
Wybierz wiersz szarości między klasą domeny i klasy shape, reprezentującą mapę elementu diagramu.
W Szczegóły DSL okna, kliknij Mapy Dekorator kartę.Jeśli nie widzisz Szczegóły DSL okna, na widoku menu, wskaż Other Windows , a następnie kliknij przycisk Szczegóły DSL.Często konieczne, podnieść u góry tego okna, aby zobaczyć całą jego zawartość jest.
Wybierz nazwę dekorator.W obszarze Właściwości wyświetlania, zaznacz nazwę właściwości klasy domeny.Powtórz ten krok dla każdego dekorator.
Aby wyświetlić właściwości elementu powiązanego, kliknij przycisk navigator drzewa rozwijanego pod ścieżki, aby wyświetlić właściwości.
Upewnij się, że obok każdego dekorator nazwa pojawia się znacznik wyboru.
Sprawdź element przybornika do tworzenia elementów klasy domeny.
W DSL Explorer, rozwiń węzeł edytora węzła i jego węzłów podrzędnych.
Kliknij prawym przyciskiem myszy węzeł pod Karty przybornik , ma taką samą nazwę jak modem DSL, na przykład MusicLibrary.Kliknij przycisk dodać narzędzie elementu.
[!UWAGA]
Jeśli prawym przyciskiem myszy Narzędzia węzła, nie zobaczysz Dodać narzędzie elementu.Zamiast tego kliknij węzeł powyżej niej.
W oknie właściwości przy zaznaczonym narzędziu w nowy element, należy ustawić klasy do klasy domeny, która niedawno został dodany.
Ustaw Caption i Tooltip.
Ustaw Ikonę przybornika do ikony, która będzie wyświetlana w przyborniku.Można ustawić nową ikonę lub ikony już używana dla innego narzędzia.
Aby utworzyć nową ikonę, należy otworzyć Dsl\Resources w Solution Explorer.Skopiuj i Wklej jeden istniejące pliki BMP narzędzie elementu.Zmień wklejonego kopii, 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 przycisk [...] w ikonę przybornika.W Bitmap wybierz okno dialogowe, wybierz użytkownika.Plik BMP z menu rozwijanego.
Aby uzyskać więcej informacji, zobacz Właściwości geometrii kształtów i Właściwości kształtów obrazu.
Do badania kształtów
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędziowym panelu Solution Explorer do generowania kodu projektanta DSL.
Tworzenie i uruchamianie DSL. Naciśnij klawisz F5 lub CTRL + F5, aby uruchomić nowe wystąpienie 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 linii DSL.
Upewnij się, że narzędzia elementu są widoczne w przyborniku.
Tworzenie kształtów przez przeciągnięcie narzędzia na diagram modelu.
Sprawdź, że pojawia się każdy tekst dekorator, i że:
Można edytować, o ile nie ustawione Jest interfejs użytkownika tylko do odczytu flagę na właściwości domeny.
Podczas edytowania właściwości w oknie dialogowym właściwości lub w dekorator innych widok jest aktualizowany.
Po przetestowaniu pierwszy kształt, można dostosować niektóre jego właściwości i dodać kilka bardziej zaawansowanych funkcji.Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficzne dla domeny.
Definiowanie relacji odniesienia
Można zdefiniować relację odwołanie między dowolnej klasy domen źródłowych i każda klasa domeny docelowej.Relacje odniesienia zazwyczaj są wyświetlane na diagramie jako łączniki, które są linie między kształtami.
Na przykład jeśli albumów i artystów są wyświetlane jako kształty na diagramie, można zdefiniować relację o nazwie ArtistsAppearedOnAlbums, który łączy wykonawcy albumów, na których pracowali.Zobacz przykład na rysunku.
Relacje odniesienia również połączyć elementy tego samego typu.Na przykład w DSL reprezentujących drzewa genealogicznego, relacji między rodziców i dzieci jest relacja odniesienia osoby.
Zdefiniuj relację typu odwołania
Kliknij narzędzie referencyjne relacji, a następnie kliknij przycisk klasy domen źródłowych relacji, a następnie kliknij klasę domeny docelowej.Klasa docelowa może być taka sama, jak klasa źródła.
Każda relacja ma dwie role, reprezentowane przez wiersz po każdej stronie w polu Relacja.Można wybrać każdej roli i ustawić jej właściwości w oknie dialogowym właściwości.
Zmienianie nazw ról należy wziąć pod uwagę.Na przykład w relacji między osoby i osoby, można zmienić domyślne nazwy rodziców i dzieci, Menedżer i podwładnych, nauczycieli i studentów i tak dalej.
Liczebność punktów poszczególnych ról dostosować, jeżeli jest to konieczne.Jeśli chcesz, aby każda osoba co najwyżej jednemu kierownikowi, należy ustawić liczebność, która pojawia się poniżej Menedżer etykiety na diagramie, aby od 0 do 1.
Dodawanie właściwości domeny do relacji. Na rysunku relacja Wykonawca Album ma właściwości roli.
UstawZezwala na duplikatywłaściwości relacji, , jeśli więcej niż jedno łącze z tej samej klasy może istnieć między tą samą parę elementów modelu.Na przykład może pozwolić nauczyciel nauczyć więcej niż jeden z zastrzeżeniem tych samych Student.
Aby uzyskać więcej informacji, zobacz Właściwości relacji domen i Właściwości domeny role.
Definiowanie łącznika do wyświetlania relacji
Łącznik wyświetla linię rozdzielającą dwa kształty na diagramie modelu.
Przeciągnij złącza narzędzie na diagram definicji DSL.
Dodać tekst dekoratorów, jeśli chcesz wyświetlić etykiety na łączniku.Ustaw swoje stanowiska.Aby poinformować użytkownika, przenieść dekorator tekstu, należy ustawić jego Jest ruchoma właściwości.
Użyj Mapę elementu diagramu narzędzie, aby połączyć łącznika Relacja odniesienia.
Otwórz diagram mapy element zaznaczony, Szczegóły DSL okno i Otwórz Mapy Dekorator kartę.
Zaznacz każdy Dekorator i Właściwości wyświetlania do właściwości poprawnej domeny.
Upewnij się, że znacznik wyboru obok każdego elementu w dekoratorów listy.
Zdefiniowanie narzędzia Konstruktor połączenia
W DSL Explorer okna, rozwiń węzeł edytora węzeł i wszystkie jego podwęzły.
Kliknij prawym przyciskiem myszy węzeł, który ma taką samą nazwę jak modem DSL, a następnie kliknij przycisk Dodać nowe narzędzie połączenia.
Gdy nowe narzędzie jest zaznaczony w oknie dialogowym właściwości:
Ustaw Caption i Tooltip.
Kliknij przycisk Połączenie konstruktora i wybierz odpowiedni konstruktor dla nowej relacji.
Ustaw Ikonę przybornika na ikonę, która ma być wyświetlany w przyborniku.Można ustawić nową ikonę lub ikony już używana dla innego narzędzia.
Aby utworzyć nową ikonę, należy otworzyć Dsl\Resources w Solution Explorer.Skopiuj i Wklej jeden istniejące pliki BMP narzędzie elementu.Zmień wklejonego kopii, 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 przycisk [...] w ikonę przybornika.W Bitmap wybierz okno dialogowe, wybierz użytkownika.Plik BMP z menu rozwijanego.
Aby przetestować relacji odniesienia i łącznika
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędziowym panelu Solution Explorer do generowania kodu projektanta DSL.
Tworzenie i uruchamianie DSL. Naciśnij klawisz F5 lub CTRL + F5, aby uruchomić nowe wystąpienie 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 linii DSL.
Sprawdź, czy narzędzie połączenia pojawia się w przyborniku.
Tworzenie kształtów przez przeciągnięcie narzędzia na diagram modelu.
Tworzenie połączenia między kształtami.Kliknij narzędzie łącznik, kliknij kształt, a następnie kliknij inny kształt.
Zweryfikuj, że nie można utworzyć połączenia między klasami niewłaściwe. Na przykład jeśli stosunek między albumów i artystów, sprawdź, że nie można połączyć artystów wykonawców.
Sprawdź poprawność liczebność punktów. Na przykład sprawdzić, że nie może połączyć się osobę do więcej niż jednego menedżera.
Sprawdź, że pojawia się każdy tekst dekorator, i że:
Można edytować, o ile nie ustawione Jest interfejs użytkownika tylko do odczytu flagę na właściwości domeny.
Podczas edytowania właściwości w oknie dialogowym właściwości lub w dekorator innych widok jest aktualizowany.
Po przetestowaniu najpierw łącznika, można dostosować niektóre jego właściwości i dodać kilka bardziej zaawansowanych funkcji.Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficzne dla domeny.
Definiowanie kształty, które zawierają listy: kształtów Pomieszczenie
Kształt przedział zawiera jedną lub kilka list elementów.Na przykład w DSL biblioteki muzyki, może użyć kształtów pomieszczenie do reprezentowania albumy muzyczne.W każdym albumie istnieje listy utworów.
Najprostszą metodą osiągnięcia tego efektu w definicji DSL służy do definiowania jedną klasę domeny dla kontenera i jednej klasy domen dla każdej listy.Klasa container jest mapowany na kształt Przedział.
Aby uzyskać więcej informacji, zobacz Właściwości kształtów Pomieszczenie.
Aby zdefiniować kształt Przedział
Tworzenie klasy kontener domeny.Kliknij przycisk Osadzanie relacji narzędzie, kliknij klasa głównego modelu, a następnie kliknij pustą część diagramu definicji DSL.Spowoduje to utworzenie klasy domeny, na przykład rysunku o nazwie albumu.
Alternatywnie zamiast osadzania w klasie katalogu głównego, można osadzić kontenera, w klasie domeny, który jest mapowany na tor.
Dodawanie właściwości domeny, takie jak nazwa klasy i ustawić jego Jest nazwą elementu flagi w oknie dialogowym właściwości.
Utwórz klasę domeny elementu listy.Kliknij przycisk Osadzanie relacji narzędzie, kliknij kontener klasy (Album), a następnie kliknij pustą część diagramu.Spowoduje to utworzenie klasy domeny, na przykład rysunku o nazwie utworu.
Dodaj właściwość domeny, takie jak tytuł, do klasy i ustawić jego Jest nazwą elementu flagi.
Dodaj inne właściwości domeny.
Dodawanie innej klasy domeny elementu listy, dla każdej listy, którą chcesz wyświetlić.
Mieszać kilka typów elementu na liście, tworzenie klas, które dziedziczą z klasy list.Nadać abstrakcyjne klasy list, ustawiając jego Modyfikator dziedziczenie.
Na przykład chcąc muzyka klasyczna, które mają być sortowane według kompozytora zamiast wykonawcy, można utworzyć dwiema podklasami utwór, ClassicalSong i NonClassicalSong.
Tworzenie kształtu Przedział.Przeciągnij z Kształt Przedział narzędzie na diagram definicji DSL.
Dodać dekorator tekstu i ustawić jego nazwę.
Dodaj pomieszczenie i ustaw jego nazwę.
Aby umożliwić użytkownikowi ukryć przedziałów listy, kliknij prawym przyciskiem myszy klasę kształtu przedział, wskaż polecenie Dodaj, a następnie kliknij przycisk Dekorator rozwiń i Zwiń.W oknie dialogowym właściwości ustaw pozycję dekorator.
Kliknij przycisk Mapę elementu diagramu narzędzie, kliknij kontener klasy domeny, a następnie kliknij kształt Przedział.
Wybierz łącze mapę elementu diagramu między klasą domeny i kształtu.W Szczegóły DSL okna:
Kliknij przycisk dekoratorów kartę.Kliknij nazwę dekorator, a następnie wybierz odpowiedni element w ramach Właściwości wyświetlania.Upewnij się, że obok nazwy dekorator pojawia się znacznik wyboru.
Kliknij przycisk Mapy przedziału kartę.
Kliknij nazwę przedziału.
W obszarze ścieżka kolekcji elementów wyświetlane, przejdź do klasy elementów listy (Song).Kliknij strzałkę rozwijania, aby użyć narzędzia navigator.
W obszarze Właściwości wyświetlania, wybierz właściwość, która powinna być wyświetlana na liście.W tym przykładzie jest to tytuł.
[!UWAGA]
Za pomocą pola ścieżki na mapie Dekorator i przedziału Mapuj pola, można tworzyć bardziej złożone relacje między klasami domeny i kształt Przedział.
Aby zdefiniować narzędziem umożliwiającym tworzenie kształtu
Sprawdź element przybornika do tworzenia elementów klasy domeny.
W DSL Explorer, rozwiń węzeł edytora węzła i jego węzłów podrzędnych.
Kliknij prawym przyciskiem myszy węzeł pod Karty przybornik , ma taką samą nazwę jak modem DSL, na przykład MusicLibrary.Kliknij przycisk dodać narzędzie elementu.
[!UWAGA]
Jeśli prawym przyciskiem myszy Narzędzia węzła, nie zobaczysz Dodać narzędzie elementu.Zamiast tego kliknij węzeł powyżej niej.
W oknie właściwości przy zaznaczonym narzędziu w nowy element, należy ustawić klasy do klasy domeny, która niedawno został dodany.
Ustaw Caption i Tooltip.
Ustaw Ikonę przybornika do ikony, która będzie wyświetlana w przyborniku.Można ustawić nową ikonę lub ikony już używana dla innego narzędzia.
Aby utworzyć nową ikonę, należy otworzyć Dsl\Resources w Solution Explorer.Skopiuj i Wklej jeden z istniejących narzędzi elementu.Pliki BMP.Zmień wklejonego kopii, 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 przycisk [...] w ikonę przybornika.W Bitmap wybierz okno dialogowe Wybierz plik BMP z menu rozwijanego.
Aby przetestować kształtu przedział
Kliknij przycisk Przekształć wszystkie szablony na pasku narzędziowym panelu Solution Explorer do generowania kodu projektanta DSL.
Tworzenie i uruchamianie DSL. Naciśnij klawisz F5 lub CTRL + F5, aby uruchomić nowe wystąpienie 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 linii DSL.
Sprawdź, czy narzędzie pojawił się w przyborniku.
Przeciągnij narzędzie na diagramie modelu.Kształt jest tworzony.
Sprawdź, czy nazwa elementu pojawia się i jest automatycznie ustawiana na wartość domyślną.
Kliknij prawym przyciskiem myszy nagłówek nowy kształt, a następnie kliknij przycisk Dodaj listy swój przedmiot. W przykładzie polecenie jest dodać utworu.
Sprawdź, czy element jest wyświetlany na liście i ma nową nazwę.
Kliknij jeden z elementów listy, a następnie zbadać okno właściwości.Należy wyświetlić właściwości elementów listy.
Otwórz Eksploratora języka.Sprawdź, czy widoczne węzły pojemnik z węzłami elementu listy wewnątrz.
Po przetestowaniu pierwszy kształt Przedział, można dostosować niektóre jego właściwości i dodać kilka bardziej zaawansowanych funkcji.Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficzne dla domeny.
Wyświetlanie łącza odniesienia w przedziale
Zwykle element, który można wyświetlić w przedziale jest elementem podrzędnym elementu, który jest reprezentowany przez kształt Przedział.Jednak czasami chcesz wyświetlić element, który jest połączony z relacją odniesienia.
Na przykład możemy dodać drugiego przedziału do AlbumShape, w którym wyświetlana jest lista artystów, które są połączone z albumu.
W tym przypadku przedział powinno być wyświetlane łącze zamiast elementu, do którego istnieje odwołanie.To dlatego, gdy użytkownik wybierze element w komorze i naciśnie klawisz DELETE, chcesz umieścić łącze do usunięcia, element odwołania.
Niemniej jednak można mieć nazwę elementu, do którego istnieje odwołanie, pojawiają się w przedziale.
W poniższej procedurze przyjęto, że już utworzono klasę domeny, relacji odniesienia, kształt Przedział i Mapa elementu diagramu, jak opisano wcześniej w tej sekcji.
Aby wyświetlić opis łącza w przedziale
Aby dodać do kształtu Przedział przedziału.Na diagramie definicji DSL, kliknij prawym przyciskiem myszy klasę kształtu przedział, wskaż polecenie Dodaj, a następnie kliknij przycisk przedziału.
Ustaw ścieżka kolekcji elementów wyświetlane przejdź do łącza, zamiast jego elementu docelowego.Kliknij menu rozwijane, a następnie wybierz relację odniesienia w swoich docelowych za pomocą widoku drzewa.W przykładzie wówczas relacja jest ArtistAppearedOnAlbums.
Ustaw ścieżki do wyświetlania właściwości do przechodzenia między łącze do elementu docelowego.W tym przykładzie jest to wykonawcy.
Ustaw Właściwości wyświetlania do odpowiednich właściwości elementu docelowego, na przykład nazwę.
Wszystkie szablony Transform, budowanie i uruchomić modem DSL i otworzyć model badania.
Na diagramie modelu utworzyć odpowiednie klasy shape, ustawić ich nazwy i utworzyć łącza między nimi.W kształcie Przedział powinny są wyświetlane nazwy elementów połączonych.
Wybierz łącze lub element w kształcie Przedział.Zarówno łącze, jak i element powinien zniknąć.
Definiowanie portów na granicy z innym kształtem
Port jest kształt, który znajduje się na granicy innego kształtu.
Porty można również zapewnienie punktu połączenia stałe innego kształtu, do którego użytkownik można narysować łączniki.W tym przypadku możesz przezroczyste kształt portu.
Aby zobaczyć przykład używa portów, zaznacz 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 klasa domeny, która reprezentuje kontener portów, Component.
Istnieje klasa domeny, która reprezentuje porty.W tym przykładzie jest to ComponentPort.
Istnieje osadzania relacji z klasy kontener domeny do klasy domeny portu.Aby uzyskać więcej informacji, zobacz Definiowanie klas domeny.
Różne rodzaje portu należy zmieszać na tym samym pojemniku, należy można utworzyć podklas klasy domeny portu.Na przykład InPort i OutPort dziedziczą z ComponentPort.
Klasa container domeny mogą być mapowane do wszelkiego rodzaju kształt.W przykładzie jest ComponentShape.Aby uzyskać więcej informacji, zobacz Kształtów definiowanie.
Port klas domeny są mapowane z kształtami portów.Można mapę klas pochodnych do oddzielenia portu kształt klasy lub mapowania klasy podstawowej do klasy shape jeden port.
Pod innymi względami portu kształty zachowują się zgodnie z opisem w Kształtów definiowanie.
Aby uzyskać więcej informacji, zobacz Właściwości portu kształtów.
Definiowanie DSL, która ma torów
Dziedziny odpowiedzialności widoczne są poziome lub pionowe partycję diagramu.Każdy tor odnosi się do elementu modelu.Definicja sieci DSL wymaga jedna klasa domeny dla elementów tor.
Najlepszym sposobem tworzenia DSL z dziedziny odpowiedzialności jest do tworzenia nowego rozwiązania DSL i wybierz szablon zadania przepływu roztworu.W definicji DSL Klasa aktora jest klasa domeny mapowane na tor.Zmień nazwę tego i innych klas do własnych projektu.
Aby dodać klasę, która będzie wyświetlana jako kształt wewnątrz tor, należy utworzyć osadzanie relacji między klasą tor i nowej klasy.Użytkownicy będą mogli przeciągnij elementy z jednego tor, ale każdy element będzie zawsze wewnątrz określonego tor.W szablonie zadania przepływu roztworu FlowElement jest elementem podrzędnym klasy tor.
Aby dodać klasę, która będzie wyświetlana jako kształt, niezależnie od dziedziny, należy utworzyć osadzanie relacji między klasą głównego i nowej klasy.Użytkownicy będą mogli umieścić w dowolnym miejscu na diagramie, łącznie z granicami torów i poza tory te kształty.W szablonie zadania przepływu roztworu komentarz jest elementem podrzędnym klasy katalogu głównego.
Aby uzyskać więcej informacji, zobacz Właściwości torów.
Dodawanie typów właściwości
Wyliczenia domen i literałów
Wyliczanie domen jest typu z kilku wartości literałów.
Aby dodać Wyliczanie domen, kliknij prawym przyciskiem myszy katalog główny model w DSL Explorer , a następnie kliknij przycisk Dodać nowe wyliczanie domen.Element pojawi się w DSL Explorer pod Domeny typów węzła.Ten element nie jest wyświetlana na diagramie.
Aby dodać Literały wyliczeniowe do wyliczenia domen, kliknij prawym przyciskiem myszy Wyliczanie domen w DSL Explorer , a następnie kliknij przycisk Dodać nowe wyliczenie literału.
Domyślnie właściwość, która ma typ wyliczeniowy można przypisać tylko jedną wartość wyliczania naraz.Jeśli chcesz, aby użytkownicy i programiści mogli ustawić dowolną kombinację wartości - set "pole bitowe-" IsFlags właściwość wyliczania.
Typy zewnętrzne
Po ustawieniu typu właściwości domeny, jeśli nie znajdziesz typ ma typu listy rozwijanej można dodać typu zewnętrznego.Na przykład, można dodać System.Drawing.Color typ do listy.
Aby dodać typ, kliknij prawym przyciskiem myszy katalog główny model w Eksploratorze DSL, a następnie kliknij przycisk Dodać nowy typ zewnętrznych.W oknie dialogowym właściwości należy ustawić nazwę Color i obszaru nazw do System.Drawing.Pojawia się w Eksploratorze DSL w ramach tego typu Domeny typów.Można go wybrać w każdym przypadku, gdy ustawiony typ właściwości domeny.
Dostosowywanie modem DSL
Za pomocą technik opisanych w tym temacie, można szybko utworzyć DSL z notacji podającą, czytelnym XML i podstawowe narzędzia, które są wymagane do generowania kodu i innych artefakty.
Istnieją dwie metody rozszerzenia definicji DSL:
Dostosowywanie modem DSL, korzystając z definicji DSL więcej funkcji.Na przykład można wprowadzać narzędzie jedno złącze, które można tworzyć kilka typów łącznika i można kontrolować zasady, które usuwając jeden element usuwa także elementy powiązane.Techniki te są przeważnie osiągnięte przez ustawienie wartości w definicji DSL, a niektóre z nich wymagają kilka wierszy kodu programu.
Aby uzyskać więcej informacji, zobacz Dostosowywanie i rozszerzanie języka specyficzne dla domeny.
Rozszerzyć swoje narzędzia do modelowania przy użyciu kodu programu w celu osiągnięcia bardziej zaawansowane efekty.Na przykład można utworzyć poleceń menu, które można zmienić model i narzędzia, które integrować dwa lub więcej DSLs.VMSDK jest przeznaczony specjalnie do ułatwiają zintegrować rozszerzenia sieci z kodem, który jest generowany na podstawie definicji DSL.Aby uzyskać więcej informacji, zobacz Pisanie kodu, aby dostosować język specyficzne dla domeny.
Zmiana definicji DSL
Po utworzeniu dowolny element w definicji DSL wielu wartości domyślne są ustawiane automatycznie.Po zostały ustawione, można je zmienić.Upraszcza to rozwój DSL, przy jednoczesnym umożliwieniu zaawansowane dostosowania.
Na przykład gdy kształt jest mapowany do elementu, ścieżki elementu nadrzędnego mapowania jest automatycznie ustawiana zgodnie z osadzania relacji klasy domeny.Jednakże jeśli później zmienisz osadzania relacji, ścieżki elementu nadrzędnego nie jest automatycznie zmieniany.
Dlatego należy pamiętać, że po zmianie niektóre relacje w Państwa definicji DSL nie niezwykłe błędy, należy podać podczas zapisywania definicji, albo przekształcić wszystkie szablony.Większość z tych błędów są łatwe do ustalenia.Kliknij dwukrotnie raport o błędach, aby zobaczyć lokalizację błędu.
See also Jak: zmienić obszar nazw języka specyficzne dla domeny.
Rozwiązywanie problemów
Poniższej tabeli przedstawiono niektóre z najczęściej występujących problemów napotkanych podczas projektowania DSL, wraz z sugestiami dotyczącymi ich rozwiązania.Więcej porad jest dostępny na Wizualizacji narzędzia Extensibililty Forum.
Problem |
Sugestia |
---|---|
Zmiany wprowadzone w pliku definicji DSL miało żadnego efektu. |
Kliknij przycisk Transform wszystkie szablony na pasku powyżej Solution Explorer, a następnie Odbuduj roztworu. |
Kształty wyświetlić nazwę dekorator zamiast wartości właściwości. |
Konfigurowanie mapowania dekorator.Na diagramie definicji DSL kliknij mapie elementu diagramu jest szara linia między klasą domeny i klasy shape. Otwórz Szczegóły DSL okna.Jeśli nie jest widoczny, w menu Widok, wskaż polecenie Other Windows, a następnie kliknij przycisk Szczegóły DSL. Kliknij przycisk Mapy Dekorator kartę.Wybierz nazwę dekorator.Upewnij się, że pole obok niej jest zaznaczone.W obszarze Właściwości wyświetlania, zaznacz 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 kliknięciu prawym przyciskiem myszy narzędzia istnieje żadne polecenie "Dodaj Tool" w menu. W Eksploratorze dla mojego modemu DSL nie mogę dodać elementu do listy. |
Kliknij prawym przyciskiem myszy element powyżej węzeł, który próbujesz.Jeśli chcesz dodać do listy, polecenie Dodaj jest nie w węźle listy, ale jego właściciel. |
Po utworzeniu klasy domeny, ale nie można utworzyć wystąpienia w Eksploratorze języka. |
Każdej klasy domeny, z wyjątkiem głównego musi być docelowej relacji z osadzania. |
W Eksploratorze DSL Moje elementy są wyświetlane tylko z ich nazwami typu. |
W definicji DSL, wybierz właściwość domain klasy i właściwości, zdefiniuj w oknie Jest nazwą elementu na wartość true. |
Mój modem DSL zawsze powoduje otwarcie edytora XML. |
Może się to zdarzyć z powodu błędu podczas odczytu pliku.Jednak nawet po rozwiązaniu tego błędu musi jawnie zresetować Edytor za Projektant sieci DSL. Kliknij prawym przyciskiem myszy element projektu, kliknij przycisk Otwórz za pomocą i wybierz YourLanguageDesigner (domyślnie). |
Przybornik my DSL nie pojawia się po zmianie nazwy zestawu. |
Sprawdzić i zaktualizować DslPackage\GeneratedCode\Package.tt uzyskać więcej informacji, zobacz Jak: zmienić obszar nazw języka specyficzne dla domeny. |
Przybornik my DSL nie pojawia się, ale nie mają po zmianie nazwy zestawu. Lub okno komunikatu pojawia się raportowanie awarii załadować rozszerzenia. |
Resetuj doświadczalnych instancji i przebudować swoje rozwiązanie.
|
Zobacz też
Zadania
Tworzenie Windows Forms opartych na domenie specyficzne dla języka
Koncepcje
Wprowadzenie do języków domeny
Tworzenie języka opartego na platformie WPF specyficzne dla domeny