Porady: generowanie kodu z diagramu klasy UML
W Visual Studio Ultimate z diagramy klas UML może wygenerować kod, za pomocą Generuj kod polecenia. Domyślnie to polecenie generuje typu C# dla każdego typu UML, który wybierzesz.Można zmodyfikować, a rozszerzenie tego zachowania poprzez modyfikowanie lub kopiowanie szablonów tekstowych, które generują kod.W modelu, można określić różne zachowania dla typów, które są zawarte w różnych pakietach.
Generuj kod polecenie to jest szczególnie odpowiednia do generowania kodu od pozycji wybranych elementów oraz do generowania jeden plik dla każdej klasy UML lub innego elementu.Na przykład zrzut ekranu przedstawia dwa C# pliki, które zostały wygenerowane z dwóch klas UML.
Alternatywnie, jeśli chcesz wygenerować kodu, w którym wygenerowane pliki nie mają relację 1: 1 z elementów UML można rozważyć pisanie tekstu szablony, które są wywoływane z Transform wszystkie szablony polecenia.Aby uzyskać więcej informacji na temat tej metody, zobacz Jak: generowanie plików z modelu UML.
Aby uzyskać więcej informacji na temat UML klasy diagramów w Visual Studio Ultimate, zobacz następujące tematy:
Za pomocą polecenia Generuj kod
W poniższej procedurze opisano domyślne zachowanie Generuj kod polecenia:
Aby wygenerować osobny plik dla każdego elementu
Utwórz model UML zawierający klasy.Być może chcesz zastosować Stereotypy do elementów modelu.
Aby uzyskać więcej informacji, zobacz Domyślne przekształca generowania kodu.
W diagramie klasy lub w Eksploratora modelu UML, zaznacz elementy, z których chcesz wygenerować kod.Można wybrać jedną z następujących czynności:
Określonego zestawu elementów.
Pakiet lub model, do generowania kodu z jego zawartość.
Diagram, aby zaznaczyć wszystkie elementy na diagramie.
Otwórz menu skrótów dla zaznaczonego elementu, a następnie wybierz polecenie Generuj kod.
Po raz pierwszy używasz Generuj kod w określonym modelu, pojawi się okno dialogowe.To okno dialogowe pozwala edytować parametry generowania kodu modelu.
Wybierz polecenie OK Jeśli nie ma pewności, że chcesz zmienić te parametry.
Aby powrócić do okna dialogowego później, otwórz menu skrótów dla diagramu, a następnie wybierz Skonfigurować domyślne ustawienia generowania kodu.Aby uzyskać więcej informacji, zobacz Dostosowywanie polecenie Generuj kod.
Pliki, które zawierają kod C# są generowane.W przypadku domyślnego pliku jest generowany dla każdego typu, a pliki są generowane w projektu biblioteki klas języka C#.Działanie to można jednak zmieniać.Aby uzyskać więcej informacji, zobacz Dostosowywanie polecenie Generuj kod.
Niektóre testy sprawdzania poprawności są stosowane do modelu w celu zapewnienia, że może być przetłumaczona na C#.Jeśli te testy nie zadziałały, wyświetlany jest komunikat o błędzie i generowanie kodu nie jest wykonywane.Jeśli użytkownik utworzył sprawdzania poprawności polecenia menu, kod nie jest generowany dla dowolnego elementu, dla którego Twoje polecenie sprawdzania poprawności nie powiedzie się.Aby uzyskać więcej informacji, zobacz Jak: definiowanie ograniczeń sprawdzania poprawności dla modeli UML.
Domyślny kod generacji transformacje
Ta sekcja zawiera podsumowanie wyników, które są produkowane przez Generuj kod polecenia, chyba że zostanie dostosowana polecenie.Aby uzyskać więcej informacji, zobacz Dostosowywanie polecenie Generuj kod.
Jeden C# typ jest produkowany dla każdego typu wybranego w modelu UML.Każdy typ znajduje się w pliku o osobnego kodu GeneratedCode folder.
Jeśli typ UML znajdującego się w opakowaniu, wygenerowany typ C# jest umieszczony wewnątrz obszaru nazw i jest on generowany w folderze który ma taką samą nazwę jak obszar nazw.
Właściwości języka C# jest generowana dla każdej Attribute klasy UML.
Metoda języka C# jest generowana dla każdej Operation typu UML.
Pole C# jest generowana dla każdego skojarzenia żeglugową, w których uczestniczy klasę.
Dodawanie stereotypu do każdego typu UML, można kontrolować więcej właściwości wygenerowanego typu C#.
Aby utworzyć ten typ C# |
Narysować tego typu UML |
Zastosowanie tego stereotypu |
---|---|---|
Klasa |
Klasa |
<none> lub Klasa C# |
Interfejs |
Interfejs |
<none> lub Interfejs języka C# |
Wyliczenie |
Wyliczenie |
<none> lub Enum C# |
Pełnomocnik |
Klasa |
Delegowana języka C# |
Struct |
Klasa |
Struct języka C# |
Aby ustawić stereotypu typu lub innego elementu
Otwórz menu skrótów dla elementu w diagramie lub w Eksploratora modelu UML, a następnie wybierz polecenie Właściwości.
W Właściwości okno, wybierz strzałkę rozwijania w Stereotypy właściwość, a następnie zaznacz pole wyboru dla stereotyp, który chcesz zastosować.
Porada Jeśli Stereotypy C# nie są wyświetlane, należy włączyć w C# profilu dla modelu lub pakiet, który zawiera elementy modelu, w których są Państwo zainteresowani.Wybierz pakiet lub głównego modelu w Eksploratora modelu UML.A następnie w Właściwości okno, wybierz polecenie profilu, a następnie włączyć profilu języka C#.
Rozwiń węzeł Stereotypy właściwość, aby wyświetlić dodatkowe właściwości, które można ustawić.
Opis właściwości typów, atrybuty, operacje i skojarzenia są zapisywane do <summary> komentarze w wygenerowanym kodzie.Elementy komentarza, które są połączone z typów są zapisywane do <remarks> komentarze.
Różnicowanie wygenerowany kod
Wygenerowany kod waha się w zależności we właściwościach każdego typu, atrybut lub operację.Na przykład, jeśli ustawisz Jest streszczenie właściwość klasy ma wartość true, a następnie abstract na generowanej klasy pojawi się słowo kluczowe.Jeśli ustawisz liczebność atrybutu do 0.. *, a następnie wygenerowany właściwość będzie miała IEnumerable<> typu.
Ponadto każdy stereotyp oferuje kilka dodatkowych właściwości, które można ustawiać.Te wartości są tłumaczone na odpowiednich słów kluczowych w kodzie języka C#.Na przykład, jeśli ustawisz właściwość Is Static dla klasy, następnie klasy C# będzie static.
Aby ustawić te właściwości dodatkowe, wybierz klasę lub innego elementu na diagramie.W oknie dialogowym właściwości rozwiń węzeł Stereotypy, a następnie rozwiń węzeł C# stereotyp, takich jak Klasy C#.Dla klas te dodatkowe właściwości obejmują:
Atrybuty CLR
Jest częściowa
Jest statyczny
Jest bezpieczna
Widoczność pakietu
Każdy atrybut i operacja ma również właściwości stereotypu, które można ustawiać.Jeśli nie ma właściwości na nowy atrybut, uruchom Generuj kod.
Dostosowywanie polecenia Generuj kod
Generuj kod polecenie działa poprzez przekształcenie sieci elementów modelu przy użyciu zestawu szablonów tekstu.Aby uzyskać więcej informacji dotyczących szablonów tekstu, zobacz Kod generacji i szablony tekst T4.
Szablony są określone w zbiorze tekst szablonu powiązania.Wiązanie szablonu tekstu określa, jaki szablon powinny być stosowane, gdzie ma być umieszczony wygenerowanych danych wyjściowych i inne parametry Generuj kod polecenia.
Przy pierwszym uruchomieniu Generuj kod polecenie na określonym modelu, dołącza zestaw domyślne powiązania szablon do katalogu głównego modelu.Te powiązania stosuje się do wszystkich elementów w modelu.
Można jednak zastąpić i dodać do tych domyślne powiązania dołączając własne powiązania do pakietów, klas lub innych elementów.Wiązanie stosuje się do wszystkich elementów, które są zawarte wewnątrz elementu, do której jest podłączony.Na przykład wszystkie typy wewnątrz danej imprezy turystycznej mają zostać przetworzone przez inny zestaw szablonów lub wyprowadzenie do innego folderu, należy do pakietu można dołączyć szablonu powiązania.
Aby przeprowadzić inspekcję wiązania szablonu dołączone do elementu modelu, wybierz polecenie wielokropka [...] w Tekst szablonu powiązania właściwość w oknie dialogowym właściwości.
Generuj kod polecenie ma zastosowanie szablonów do każdego elementu modelu, który wybrano.Dla każdego elementu zestaw szablonów, stosowane jest połączonego zestawu szablonów, które są dołączone do jego kontenerów do i w tym katalogu głównego modelu.
Jeśli dwa powiązania szablon w tym zestawie mają taką samą nazwę, wiązanie w kontenerze mniejszych zastępuje powiązanie w większego pojemnika.Na przykład modelu głównego ma powiązania o nazwie Class Template.Mieć własny szablon zastosowany do zawartości danej imprezy turystycznej, zdefiniować własne wiązania szablonu, o nazwie Class Template.
Więcej niż jeden szablon można stosować do elementu modelu.Od każdego elementu modelu, można generować więcej niż jeden plik.
[!UWAGA]
Wiązania, dołączone do katalogu głównego modelu działają jako ustawienia domyślne dla wszystkich elementów w modelu.Aby wyświetlić te domyślne powiązania, otwórz menu skrótów dla Powierzchnia diagramu, a następnie wybierz Skonfigurować ustawienia generowania kodu domyślnego.Alternatywnie można wybrać głównego modelu w Eksploratorze modelu UML, a następnie wybierz [...] w Tekst szablonu powiązania właściwość.Powiązania będą widoczne dopiero po zastosowaniu Generuj kod co najmniej raz polecenie.Szablon powiązania nie można dołączyć do diagramu.
Aby dołączyć tekst szablonu powiązania do pakietu lub innego elementu modelu
W Eksploratora modelu UML, otwórz menu skrótów dla elementu modelu, a następnie wybierz Właściwości.Chcesz ogólnie rzecz biorąc, dołączyć tekst szablonu powiązania do pakietu lub do głównego modelu.
W Właściwości okno, kliknij przycisk wielokropka ([...]) w Tekst szablonu powiązania właściwość.
Tekst szablonu powiązania pojawi się okno dialogowe.
Wybierz polecenie Dodaj Aby utworzyć nowe powiązanie szablonu tekstu.
- lub -
Wybierz istniejące powiązania go edytować.
Każdego powiązania szablon definiuje, jak określonego szablonu powinny być stosowane w taki sposób, aby wybrany element modelu i innych elementów modelu, które zawiera.
W oknie dialogowym Zestaw właściwości powiązania szablon tekstu.
Właściwość
Opis
Nazwa
Nazwa dla tego wiązania.Aby zastąpić powiązanie odziedziczony zawierające pakiet lub modelu, należy użyć tej samej nazwie jako wiążących, które chcesz zastąpić.
Zastąp
Jeśli wartość true, istniejący kod jest zastępowany.
Nazwa obiektu docelowego
Nazwa pliku, który jest generowany.
Możesz wstawić wyrażeń do tego ciągu takich jak {Name} lub {Owner.Name}.Na przykład można napisać: {Owner.Name}_{Name}.Wyrażenie jest sprawdzane na element modelu.Można go używać właściwości elementów, ale nie metody.Aby dowiedzieć się, jakie właściwości mogą być używane, wyświetlenia właściwości typów w Microsoft.VisualStudio.Uml.*.
Ważne{Nazwa} lub {Owner.Name} może być używana tylko w Nazwę docelowego właściwość.Aby zmienić nazwę wygenerowanej klasy, musisz zmodyfikować szablon.Aby uzyskać więcej informacji, zobacz zapisywania szablonu.Ścieżka projektu
Określa ścieżkę do Visual Studio projektu, który będzie zawierał transformacja wyjściowych plików.Wpisane wartości umożliwia utworzenie nowego projektu.Wybierz przycisk wielokropka ([...]) aby wybrać istniejący projekt.
Jeśli nie istnieje, zostanie utworzony nowy projekt.Będzie on projektu biblioteki klas języka C#.
Aby to zrobić, należy wpisać projektu bezpośrednio.Może zawierać makra zmiennej środowiska, takich jak % ProgramFiles % lub % LocalAppData %.
Katalog docelowy
Folder, w którym generowany jest plik docelowy.Ścieżka jest względna w stosunku do folderu projektu.
Można użyć {PackageStructure} wyrażenie, aby wstawić ścieżkę, która odpowiada nazw zawierających pakietów.Wartością domyślną jest \GeneratedCode\{PackageStructure}.Może również zawierać zmienne środowiskowe, takie jak % TEMP % lub % HomePath %.
Ważne{PackageStructure} może być używana tylko w Katalog docelowy właściwość.Ścieżka pliku szablonu
Szablon, który będzie wykonywał transformacja.
Można użyć z warunkiem, że szablony lub tworzyć własne.Warunkiem, że szablony można znaleźć w następującej lokalizacji:
...\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\Extensibility\Templates\Text\
Można dołączyć tyle powiązania do elementu, jak chcesz.
Zapisywanie szablonu
Można napisać swoje własne szablony tekstu.Szablony tekstu może generować kod programu lub innego rodzaju pliku tekstowego.
Zaleca się, aby podczas uruchamiania przez zmodyfikowanie kopie szablonów standardowych.Szablony można skopiować z następujących lokalizacji:
...\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\Extensibility\Templates\Text\
Zrozumienie szablonów tekstowych, można znaleźć w następujących tematach.
Szablonu jest prototypem wynikowego pliku i zawiera utworzony tekst i kod programu, który czyta modelu.Aby uzyskać więcej informacji, zobacz Kod generacji i szablony tekst T4.
Aby nawigować modelu UML w kodzie programu, należy użyć interfejsu API UML.Aby uzyskać więcej informacji, zobacz Jak: Przejdź do modelu UML i Interfejs API odniesienia dla rozszerzeń do modelowania diagramów UML.
Aby użyć szablonów z Generuj kod polecenia, należy uwzględnić dyrektywę modelowania.Na przykład:
<#@ Modeling ElementType="Microsoft.VisualStudio.Uml.Classes.IClass" Processor="ModelingProcessor" #>
ElementType Atrybut określa typ elementu UML, do którego ma zastosowanie tego szablonu.
W szablonie this należy do klasy tymczasowych, o następujących właściwościach:
Element= UML IElement do których szablon jest stosowane.
Errors: CompilerErrorCollection
ModelBus: ModelBus.Aby uzyskać więcej informacji, zobacz Jak: integrowanie modeli UML z innych modeli i narzędzia.
ProfileName= "C#profile"
ServiceProvider: IServiceProvider
Session: TextTemplatingSession.
Store: Store.Jest to, wizualizacji i skład SDK modelowania, w którym zaimplementowano UML ModelStore.Aby uzyskać UML IModelStore, użyj this.Element.GetModelStore().
Może się okazać następujące punkty pomocne podczas pisania szablonu.Informacje te opisano szczegółowo w Kod generacji i szablony tekst T4.
Można ustawić rozszerzenie nazwy pliku wynik w Output dyrektywy.Jeden Output w każdym szablonie tekstu jest wymagane dyrektywą.
Niektóre zespoły automatycznie odwołuje się szablon.Zespoły te obejmują na przykład, System.dll i Microsoft.VisualStudio.Uml.Interfaces.dll.
Aby używać innych zestawów w generowania kodu programu, należy użyć Assembly dyrektywy.Na przykład:
<#@ Assembly Name="%ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.ArchitectureTools.Extensibility.dll" #>
Niektóre obszary nazw, takich jak System są automatycznie importowane do kodu programu.W innych obszarach nazw, można użyć Import w dyrektywie w taki sam sposób, za pomocą using instrukcji.Na przykład:
<#@ Import Namespace="Microsoft.VisualStudio.Uml.Classes" #>
<#@ Import Namespace="Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml" #>
Użycie Include dyrektywy, aby odwołać się za tekst z innego pliku.
Części szablonu, ujęte w nawiasy, <# ... #> są wykonywane przez Generuj kod polecenia.Części szablonu poza te nawiasy są kopiowane do pliku wynikowego.To ważne jest rozróżnienie między generowania kodu i wygenerowany tekst.Wygenerowany tekst może być w dowolnym języku.
<#= Expressions #>są testowane i konwertowane na łańcuchy.