Megosztás a következőn keresztül:


Egyéni T4-szövegsablon-feldolgozók létrehozása

A szövegsablon-átalakítási folyamat bemenetként egy szövegsablonfájlt vesz fel, és kimenetként egy szövegfájlt hoz létre. A szövegsablon-átalakítási motor vezérli a folyamatot, és a motor egy szövegsablon átalakítási gazdagéppel és egy vagy több szövegsablon-irányelv-feldolgozóval működik együtt a folyamat befejezéséhez. További információ: A szövegsablon átalakítási folyamata.

Egyéni direktíva-feldolgozó létrehozásához létrehozhat egy osztályt, amely a következőtől öröklődik: vagy DirectiveProcessorRequiresProvidesDirectiveProcessor.

A kettő között az a különbség, hogy DirectiveProcessor megvalósítja a minimális felületet, amely szükséges a paraméterek felhasználótól való lekéréséhez és a sablon kimeneti fájlját létrehozó kód létrehozásához. RequiresProvidesDirectiveProcessor megvalósítja az igényel/biztosít tervezési mintát. RequiresProvidesDirectiveProcessor két speciális paramétert kezel, requires és providesa . Az egyéni irányelvfeldolgozók például elfogadhatnak egy fájlnevet a felhasználótól, megnyithatják és elolvashatják a fájlt, majd a fájl szövegét egy elnevezett fileTextváltozóban tárolhatják. Az RequiresProvidesDirectiveProcessor osztály alosztálya a requires paraméter értékeként egy fájlnevet fogadhat a felhasználótól, és a provides paraméter értékeként annak a változónak a nevét, amelyben a szöveget kell tárolni. Ez a processzor megnyitja és felolvassa a fájlt, majd a fájl szövegét a megadott változóban tárolja.

Mielőtt egyéni irányelv-feldolgozót hív meg egy szövegsablonból a Visual Studióban, regisztrálnia kell azt.

A beállításkulcs hozzáadásáról további információt az Egyéni irányelv-feldolgozó üzembe helyezése című témakörben talál.

Egyéni irányelvek

Az egyéni irányelv így néz ki:

<#@ MyDirective Processor="MyDirectiveProcessor" parameter1="value1" ... #>

Egyéni irányelv-feldolgozót akkor használhat, ha külső adatokat vagy erőforrásokat szeretne elérni egy szövegsablonból.

A különböző szövegsablonok megoszthatják azokat a funkciókat, amelyeket egyetlen irányelv-feldolgozó biztosít, így az irányelv-feldolgozók módot biztosítanak a kód újrafelhasználására. A beépített include direktíva hasonló, mivel a kód kifaktorozására és a különböző szövegsablonok közötti megosztására használható. A különbség az, hogy az include irányelv által biztosított funkciók rögzítettek, és nem fogadnak el paramétereket. Ha egy szöveges sablon általános funkcióit szeretné biztosítani, és lehetővé szeretné tenni a sablon számára a paraméterek átadását, létre kell hoznia egy egyéni irányelv-feldolgozót.

Néhány példa az egyéni irányelv-feldolgozókra:

  • Egy irányelvfeldolgozó, amely adatokat ad vissza egy olyan adatbázisból, amely paraméterekként elfogadja a felhasználónevet és a jelszót.

  • A fájl nevét paraméterként elfogadó fájl megnyitására és olvasására vonatkozó irányelv-feldolgozó.

Egyéni irányelvfeldolgozó fő részei

Egy irányelvfeldolgozó fejlesztéséhez létre kell hoznia egy osztályt, amely a következőtől öröklődik: vagy DirectiveProcessorRequiresProvidesDirectiveProcessor.

A legfontosabb DirectiveProcessor módszerek, amelyeket végre kell hajtania, a következők.

  • bool IsDirectiveSupported(string directiveName) - Adjon vissza true , ha az irányelv feldolgozója képes kezelni a megnevezett irányelvet.

  • void ProcessDirective (string directiveName, IDictionary<string, string> arguments) - A sablonmotor ezt a metódust meghívja a sablonban lévő irányelvek minden előfordulásához. A processzornak mentenie kell az eredményeket.

A ProcessDirective() felé irányuló összes hívás után a templating motor a következő metódusokat fogja meghívni:

  • string[] GetReferencesForProcessingRun() – Adja vissza a sablonkód által igényelt szerelvények nevét.

  • string[] GetImportsForProcessingRun() – Adja vissza a sablonkódban használható névtereket.

  • string GetClassCodeForProcessingRun() – Adja vissza a sablonkód által használható metódusok, tulajdonságok és egyéb deklarációk kódját. Ennek legegyszerűbb módja egy C# vagy Visual Basic kódot tartalmazó sztring létrehozása. Annak érdekében, hogy az irányelvfeldolgozó bármilyen CLR-nyelvet használó sablonból meghívható legyen, az utasításokat CodeDom-faként hozhatja létre, majd visszaadhatja a fa szerializálásának eredményét a sablon által használt nyelven.

  • További információ : Útmutató: Egyéni irányelvfeldolgozó létrehozása.