Proces transformacji szablonu tekstowego
Proces przekształcania szablonu tekstu przyjmuje plik szablonu tekstowego jako dane wejściowe i generuje nowy plik tekstowy jako dane wyjściowe. Na przykład możesz użyć szablonów tekstowych do wygenerowania kodu Języka Visual Basic lub C# albo wygenerować raport HTML.
W tym procesie biorą udział trzy składniki: aparat, host i procesory dyrektywy. Aparat steruje procesem; współdziała z hostem i procesorem dyrektywy w celu utworzenia pliku wyjściowego. Host zapewnia wszelkie interakcje ze środowiskiem, takie jak lokalizowanie plików i zestawów. Procesor dyrektywy dodaje funkcje, takie jak odczytywanie danych z pliku XML lub bazy danych.
Proces przekształcania szablonu tekstu jest wykonywany w dwóch krokach. Najpierw aparat tworzy klasę tymczasową, która jest nazywana wygenerowaną klasą transformacji. Ta klasa zawiera kod generowany przez dyrektywy i bloki sterujące. Następnie aparat kompiluje i wykonuje wygenerowaną klasę przekształcania w celu wygenerowania pliku wyjściowego.
Elementy
Składnik | opis | Możliwość dostosowywania (Tak/Nie) |
---|---|---|
Aparat | Składnik aparatu steruje procesem przekształcania szablonu tekstowego | L.p. |
Gospodarz | Host jest interfejsem między aparatem a środowiskiem użytkownika. Program Visual Studio jest hostem procesu przekształcania tekstu. | Tak. Możesz napisać hosta niestandardowego. |
Procesory dyrektywy | Procesory dyrektywy to klasy obsługujące dyrektywy w szablonach tekstu. Dyrektywy umożliwiają dostarczanie danych do szablonu tekstowego ze źródła wejściowego. | Tak. Można pisać niestandardowe procesory dyrektywy |
Aparat
Aparat odbiera szablon jako ciąg z hosta, który obsługuje wszystkie pliki używane w procesie przekształcania. Następnie aparat prosi hosta o zlokalizowanie dowolnych niestandardowych procesorów dyrektywy i innych aspektów środowiska. Następnie aparat kompiluje i uruchamia wygenerowaną klasę transformacji. Aparat zwraca wygenerowany tekst do hosta, który zwykle zapisuje tekst w pliku.
Host
Host jest odpowiedzialny za wszystkie elementy, które odnoszą się do środowiska poza procesem przekształcania, w tym za następujące elementy:
Lokalizowanie plików tekstowych i binarnych żądanych przez aparat lub procesor dyrektywy. Host może przeszukiwać katalogi i globalną pamięć podręczną zestawów w celu zlokalizowania zestawów. Host może zlokalizować niestandardowy kod procesora dyrektywy dla aparatu. Host może również zlokalizować i odczytać pliki tekstowe i zwrócić ich zawartość jako ciągi.
Udostępnianie list standardowych zestawów i przestrzeni nazw używanych przez aparat do tworzenia wygenerowanej klasy transformacji.
Udostępnienie domeny aplikacji używanej podczas kompilowania aparatu i wykonywania wygenerowanej klasy transformacji. Oddzielna domena aplikacji jest używana w celu ochrony aplikacji hosta przed błędami w kodzie szablonu.
Zapisywanie wygenerowanego pliku wyjściowego.
Ustawianie domyślnego rozszerzenia dla wygenerowanego pliku wyjściowego.
Obsługa błędów przekształcania szablonu tekstowego. Na przykład host może wyświetlać błędy w interfejsie użytkownika lub zapisywać je w pliku. (W programie Visual Studio błędy są wyświetlane w oknie komunikatu o błędzie).
Podanie wymaganej wartości parametru, jeśli użytkownik nazwał dyrektywę bez podawania wartości. Procesor dyrektywy może określić nazwę dyrektywy i parametr i poprosić hosta o podanie wartości domyślnej, jeśli ma.
Dyrektywy i procesory dyrektyw
Dyrektywa jest poleceniem w szablonie tekstowym. Udostępnia parametry procesu generowania. Zazwyczaj dyrektywy definiują źródło i typ modelu lub innych danych wejściowych oraz rozszerzenie nazwy pliku wyjściowego.
Procesor dyrektywy może przetwarzać co najmniej jedną dyrektywę. Podczas przekształcania szablonu należy zainstalować procesor dyrektywy, który może obsługiwać dyrektywy w szablonie.
Dyrektywy działają przez dodanie kodu w wygenerowanej klasie transformacji. Dyrektywy są wywoływane z szablonu tekstowego, a aparat przetwarza wszystkie wywołania dyrektywy podczas tworzenia wygenerowanej klasy transformacji. Po pomyślnym wywołaniu dyrektywy pozostała część kodu, który piszesz w szablonie tekstowym, może polegać na funkcjonalności zapewnianej przez dyrektywę. Możesz na przykład wykonać następujące wywołanie import
dyrektywy w szablonie:
<#@ import namespace="System.Text" #>
Standardowy procesor dyrektywy konwertuje to na instrukcję using
w wygenerowanej klasie przekształcania. Następnie możesz użyć StringBuilder
klasy w pozostałej części kodu szablonu bez kwalifikowania go jako System.Text.StringBuilder
.