Frage

Ich versuche, eine Klasse innerhalb einer T4-Vorlage in VS2008 zu verwenden.

Hier ist eine vereinfachte Version von dem, was ich tue ...

<#@ template language="VB" debug="True" hostspecific="True" #>
<#@ output extension=".vb" debug="True" hostspecific="True" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Windows.Forms.dll" #>
<#@ assembly name="System.xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SQLClient" #>
<# Call (New SomeClass).Start()#>
<#+
Private Class SomeClass
    Public Sub Start()
    #>test<#+
    End Sub
End Class 
#>

Wenn ich diese Vorlage laufen ... Ich erhalte die folgende Störung ...


  

Fehler 1 Compilieren Transformation: ‚Write‘ ist kein Mitglied   ‚Microsoft.VisualStudio.TextTemplatingF77BDE667ECAD297F587D3D651053846.   GeneratedTextTransformation.SomeClass'. D: \ Entwicklung \ PrivateProjects \ Codegenerierung \ Codegenerierung \ Erzeugung \ Common \ test2.tt 16 1 Codegenerierung

Kann mein jemand sagen, warum dies den Fehler verursacht, es tut und was noch wichtiger ist, wie es ist Effekte zu negieren?

War es hilfreich?

Lösung

Der Code ...

#>test<#+

... intern übersetzt ...

Write("test"); 

Da meine Klasse eine nicht haben ‚Write‘ -Methode, die Kompilierung fehl.

Die Abhilfe ist ....

<#@ template language="VB" debug="True" hostspecific="True" #>
<#@ output extension=".vb" debug="True" hostspecific="True" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Windows.Forms.dll" #>
<#@ assembly name="System.xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SQLClient" #>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>

<# Call (New SomeClass(Me)).Start()#>

<#+
Private Class SomeClass
Private mOutput as TextTransformation
Public Sub New(Output as TextTransformation)
    mOutput = Output
End Sub 
Public Sub Write(SomeText as String)
    mOutput.Write(SomeText)
End Sub 
    Public Sub Start()
        #>test<#+
    End Sub
End Class 
#>

, die in der Schreib führt zur Verarbeitung an die übergeordneten Klasse übergeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top