14.01.2011
22:55

Parameter – Text Templates (T4) mit den Klassen des Visual Studio Automation Model (EnvDTE) verwenden.

Nachdem ich schon Probleme damit hatte, eigene Objekte an einem parametrisierten Text Template zu übergeben, da bedingt durch die zufällig erzeugten AppDomains Grundvoraussetzungen erfüllt sein müssen, hing ich jetzt kurzzeitig bei den Klassen aus dem EnvDTE - Namensraum fest.

Meine Vorlage hat folgenden Aufbau:

Abbildung 1
Abbildung 1 Parametertyp EnvDTE.CodeClass erzeugt Fehlermeldung

Für den Parameter RepositoryClass habe ich als Typ EnvDTE.CodeClass definiert, damit ich mit diesen Angaben aus dem File Code Model bspw. die Service-Implementierung erstellen kann.

Beim ersten Aufruf begrüsste mich jedoch folgende Fehlermeldung:

Error 1 Running transformation: The type 'EnvDTE.CodeClass' of the parameter 'RepositoryClass' did not match the type of the data passed to the template.   

Der erste Gedanke, wow schon mal keine Serialisierungsausnahme, aber warum wird der Typ nicht erkannt? Der zweite Gedanke, aja ist ja COM und der Klassen- bzw. Schnittstellentyp entspricht in diesem Fall nicht dem Typ EnvDTE.CodeClass während der Übertragung zwischen den AppDomains.

Also war der nächste Versuch den Parametertyp durch System.Object und im Statement-Block der Textvorlage den Parameter gecastet einer Hilfsvariable zu übergeben. Der Vorteil dieser Variante: Im Gegensatz zum Parameter funktioniert mit der Hilfsvariable die Intellisense mit dem Tangible T4-Editor. ;-)

Abbildung 2
Abbildung 2 Anpassung des Parametertyps auf System.Object und EnvDTE.CodeClass Cast auf Hilfsvariable

Erneuter Versuch und es funktioniert. Nun werden in meinem Beispiel für alle öffentlichen Methoden eines Repositories die passenden Serviceimplementierungen erzeugt.

Abbildung 3
Abbildung 3 Generierter Code mit Hilfe des VS FileCodeModel
  •  
  • 0 Kommentar(e)
  •  

Mein Kommentar

Über jeden weiteren Kommentar in diesem Post benachrichtigen.

Zurück

Translate this page

Kategorien

  • [-].NET Development (215)
  • [-]Datenbank (26)
  • HTML (1)
  • Konfiguration (12)
  • Mind Map (10)
  • Off-topic (9)
  • Open Source (3)
  • Qualität (7)
  • Sharepoint (6)
  • Sicherheit (2)

Archiv

Social Bookmarking

Bookmark bei: Mr. Wong Bookmark bei: Webnews Bookmark bei: Icio Bookmark bei: Oneview Bookmark bei: Linkarena Bookmark bei: Favoriten Bookmark bei: Seekxl Bookmark bei: Favit Bookmark bei: Social Bookmarking Tool Bookmark bei: Power Oldie Bookmark bei: Bookmarks.cc Bookmark bei: Newskick Bookmark bei: Newsider Bookmark bei: Linksilo Bookmark bei: Readster Bookmark bei: Folkd Bookmark bei: Yigg Bookmark bei: Digg Bookmark bei: Del.icio.us Bookmark bei: Reddit Bookmark bei: Simpy Bookmark bei: StumbleUpon Bookmark bei: Slashdot Bookmark bei: Netscape Bookmark bei: Furl Bookmark bei: Yahoo Bookmark bei: Spurl Bookmark bei: Google Bookmark bei: Blinklist Bookmark bei: Blogmarks Bookmark bei: Diigo Bookmark bei: Technorati Bookmark bei: Newsvine Bookmark bei: Blinkbits Bookmark bei: Ma.Gnolia Bookmark bei: Smarking Bookmark bei: Netvouz Information