コード生成用に T4 の調査を開始しています。
巧妙なことを実行できるc#/vbの小さなチャンクを埋め込むことができる基本的なテンプレートがあると思います...
<#@ template language="VB" debug="True" hostspecific="True" #>
<#@ output extension=".vb" debug="True" hostspecific="True" #>
Imports System
<#For Each Table as String in New String(0 {"Table1","Table2"}#>
Public Class <#=Table#>DA
Public Sub New
<#= WriteConstructorBody() #>
End Sub
End Class
<#Next#>
<#+
Public Function WriteConstructorBody() as String
return "' Some comment"
End function
#>
これは素晴らしい..しかし、私は自分のメインブロックをこうして書きたいと思っています...
<#@ template language="VB" debug="True" hostspecific="True" #>
<#@ output extension=".vb" debug="True" hostspecific="True" #>
Imports System
<#
For Each BaseTableName as String in New String(){"Table1","Table2"}
WriteRecDataInterface(BaseTableName)
WriteRecDataClass(BaseTableName)
WriteDAInterface(BaseTableName)
WriteDAClass(BaseTableName)
Next
#>
次に、クラス ブロックに WriteX メソッドが存在するようにしたいと考えていますが、例によってコードを使用して書き込み可能にしたいと考えています。つまり、エスケープされたコード ブロックです。
どうすればこれを達成できますか?