J'ai utilisé T4 pour générer des classes d'entités, mais j'ai oublié de les créer Serializable
. Donc, y at-il une solution pour utiliser quelque chose comme T4
pour ajouter un attribut Serializable
à toutes mes classes?Modifier les classes modifiées générées par T4
Répondre
Si vous avez déjà modifié vos classes générées, je pense que vous pourriez trouver plus facile de faire avec le remplacement global de Visual Studio avec une regex de fantaisie pour trouver les classes que vous devez changer. (Si ce n'est pas possible, il n'est pas difficile d'écrire une application console rapide pour traiter les fichiers).
En utilisant T4, vous pouvez contrôle les fichiers sont effacés et remplacés, par exemple en utilisant la Output.PreserveExistingFile
qui vient avec T4 Toolbox.
<#
var t = new SampleTemplate();
t.Output.File = "Sample.cs";
t.Output.PreserveExistingFile = true;
t.Render();
#>
Puis vous pouvez supprimer les fichiers spécifiques que vous souhaitez recréer. Mais quelle que soit la manière dont vous déterminez les fichiers à remplacer, les modifications apportées aux fichiers que vous avez effectués depuis la dernière régénération seront perdues. Une recommandation consiste à créer vos modèles en tant que classes partielles afin que vous puissiez mettre toutes les modifications manuelles dans un fichier séparé (mais cela ne vous aide pas vraiment si vous avez déjà modifié vos classes générées).
Ces classes générées sont-elles des classes partielles? Si c'est le cas, utilisez un autre modèle T4 afin de générer une définition de classe partielle décorée avec l'attribut Serializable.
Sinon, vous pouvez utiliser Visual Studio CodeModel afin d'identifier toutes les classes qui ont besoin de cette implémentation dans un autre modèle T4, puis laisser ce modèle T4 ajouter les fragments de code nécessaires. Si vous utilisez tangible's T4 Editor, il est fourni avec une galerie de modèles gratuite et, pour autant que je sache, il existe un modèle appelé "Ajouter NotifyPropertyChanged" qui fait à peu près ce que vous cherchez: découvrir des classes de code dans une solution et faire les implémenter une interface donnée. Vous pouvez facilement adapter celui-ci et obtenir votre fonctionnalité souhaitée.
Espérons que ça aide.
- 1. Protéger les classes générées par Groovy/BeanShell
- 2. Classes Metamodel générées par les outils Hibernate
- 3. Modifier les instructions sql générées par JDBC
- 4. Préfixage des classes générées par JAXB
- 5. Hiérarchie des classes générées automatiquement par JAXB
- 6. Utilisez-vous directement les classes générées par LINQ?
- 7. Comment emballer les classes générées Maven 2 par Cobertura?
- 8. Les classes POCO sont-elles générées par LINQ?
- 9. comment utiliser SSL dans les classes générées par gSOAP C++
- 10. Sérialisation sélective avec les classes générées par SubSonic
- 11. EntityFramework classes générées
- 12. Héritage dans les classes LINQ générées?
- 13. UseImplicitZeroDefaults pour les classes de protobuf générées
- 14. RoR: Cacher/Modifier les étiquettes générées?
- 15. Modification du nom des classes générées par JibX CodeGen
- 16. Les classes générées par xsd.exe ne sérialisent pas les attributs de valeur par défaut
- 17. Appel des propriétés de sous-classes dans les classes générées par le code (via xsd.exe)
- 18. Comment différencier les classes générées par le compilateur à partir des classes d'utilisateur dans .NET
- 19. Classes d'exceptions générées avec Axis2
- 20. Gestion des classes générées par JAXB dans un projet Maven
- 21. Ajout du préfixe aux classes générées par cxf
- 22. Référencement de classes générées par JAXB dans une application Java
- 23. Pourquoi les vues drupal des classes css sont-elles modifiées?
- 24. Comment générer plusieurs versions de classes Java générées par JAXB?
- 25. Comment sérialiser des instances de classes générées par DbMetal?
- 26. Pourquoi les classes générées par APT ne sont-elles pas compilées par Eclipse?
- 27. Modifier MVCScaffolding modèle t4 pour DB Premier
- 28. Comment modifier l'espace de noms dans les classes générées avec le modèle CTP5 DbContextGenerator
- 29. Préserver les anciennes données modifiées par l'utilisateur
- 30. Ignorer les champs des vues MVC générées par l'assistant
Pas une réponse mais une astuce pour le futur: La puissance de T4 ne se manifeste que lorsque vous régénérez constamment les classes. IE vous ne modifiez pas le code généré. Alors ce serait très simple. Changez juste le modèle et régénérez. Si vous avez besoin d'étendre les classes générées, utilisez des classes/méthodes partielles. Si vous générez juste une fois que T4 dégénère en programmation copier-coller avec le support d'outil. – FuleSnabel