2009-04-30 8 views
3

Je pense que je comprends les principes de base de T4, mais j'ai du mal à comprendre comment l'appliquer à ma situation particulière.T4 Confusion

J'ai une application qui affiche des listes d'objets de quelque sorte - n'importe quoi. Je souhaite autoriser les utilisateurs à sélectionner un ou plusieurs de ces objets et à les soumettre à n'importe quel modèle. Le modèle pourrait générer, par exemple, un fichier html décrivant les objets ou un script powershell pour les manipuler d'une manière ou d'une autre.

La chose que je n'arrive pas à comprendre est comment passer les objets sélectionnés dans mon hôte personnalisé.

Je pourrais créer un fichier d'inclusion tt étendu qui a appelé ma propre API pour extraire ces objets de leur stockage, mais cela semble stupide quand j'ai déjà des instances des objets dans la portée et je veux juste les examiner pour produire du texte sortie.

J'espère que cela a du sens ...

J'ai essayé d'ajouter des propriétés à mon hôte, puis en utilisant le réglage de hostspecific je pensais que je pouvais utiliser les objets via ces propriétés, mais tout ce que je reçois est des erreurs sur la sérialisation et une telle des trucs.

Un très bon exemple de la façon de le faire serait fantastique :)

Merci

Répondre

3

Peut-être article répondra à votre question. "Modèle autonome" peut être la meilleure option de conception. Les autres options sont les variables d'environnement et les fichiers externes. Cependant, j'espère que vous décidez de ne pas utiliser un hôte personnalisé (à moins que vous ne souhaitiez avoir votre propre style de T4, probablement incompatible avec tout autre hôte T4) et utiliser TextTransform.exe à la place.

+0

Je pensais avoir lu toute votre bible mais j'ai manqué celui-là. La bière est dans le courrier. À votre santé! – Jonesie

+0

Ça marche! Yee ha! Mon hôte utilise CallContext pour définir les données logiques puis dans le modèle que j'ai: <# @ langage de template = "C#" #> < « . Ps1" # @ extension de sortie = #> <# @ import namespace = "System.Runtime.Remoting.Messaging" #> <# = Service.Url #> <# + service {service \t get {return CallContext.LogicalGetData ("service") en tant que service; } \t } #> Mon hôte personnalisé ajoute les importations pertinentes pour le service et d'autres éléments. – Jonesie