Udostępnij za pośrednictwem


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.