T4 Code generatie is op zich aardig te begrijpen, maar allemaal vanuit de designer. Het aanmaken van scripts, templates en generatoren is goed te doen.
Wat ik niet begrijp is hoe ik vanuit code parameters door kan geven (run time) aan een script om zo de juiste 'code' te genereren.
Een voorbeeldje:
Een simpel script als:
Is prima om te zetten naar een template:
Om tot slot een script gebasseerd op het template te maken:
Wat ik niet begrijp is hoe ik userinput kan gebruiken om Database en Company te vullen?
Ik ben aan het stoeien geslagen met Preprocessed templates, maar loop behoorlijk vast, heeft iemand hier ervaring mee om me de goede kant in te sturen?
Wat ik niet begrijp is hoe ik vanuit code parameters door kan geven (run time) aan een script om zo de juiste 'code' te genereren.
Een voorbeeldje:
Een simpel script als:
C#:
1
2
3
4
5
6
| <#@ template language="C#" hostspecific="True" debug="True" #> <#@ output extension="sql" #> <#@ include file="T4Toolbox.tt" #> USE [DATABASENAME] GO DROP PROCEDURE [dbo].[COMPANY$SomeProcedure] |
Is prima om te zetten naar een template:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <#@ include file="T4Toolbox.tt" #> <#@ output extension="cs" #> <#+ public class TemplateTest : Template { public string DatabaseName; public string CompanyName; public override string TransformText() { #> USE [<#= DatabaseName #>] GO DROP PROCEDURE [dbo].[<#= CompanyName #>$SomeProcedure] <#+ return this.GenerationEnvironment.ToString(); } } #> |
Om tot slot een script gebasseerd op het template te maken:
C#:
1
2
3
4
5
6
7
8
9
10
| <#@ template language="C#" hostspecific="True" debug="True" #> <#@ output extension="sql" #> <#@ include file="T4Toolbox.tt" #> <#@ include file="TemplateTest.tt" #> <# TemplateTest template = new TemplateTest(); template.CompanyName = "TestCompany"; template.DatabaseName = "TestDatabase"; template.Render(); #> |
Wat ik niet begrijp is hoe ik userinput kan gebruiken om Database en Company te vullen?
Ik ben aan het stoeien geslagen met Preprocessed templates, maar loop behoorlijk vast, heeft iemand hier ervaring mee om me de goede kant in te sturen?
٩(͡๏̯͡๏)۶ ٩(●̮̮̃•̃)۶