J'ai un modèle T4 où je voudrais générer un fichier .cs.
J'ai un tableau de J'utilise Je pense à comment puis-je initialiser les variables définies dans ce cas: p> J'aimerais voir la sortie: Définition variable dans template T4: p> Je pense à écrire la méthode de l'assistant, qui retournera chaîne d'initialisation variable pour les types de données courants. Quelque chose comme: p> Si quelqu'un a fait quelque chose de similaire, pourriez-vous vous conseiller si c'est une bonne idée ou cela pourrait être fait de manière plus pratique? Peut-être que je devrais lire quelque chose? P> p> système.data.datacolumn code> que j'aimerais utiliser comme variables privées dans mon fichier de code généré. p> colleName code> comme nom de variable, valeur code> comme valeur variable et DataType code> comme type de données variable. P> Système privé.string col1 = "texte"; code> p>
3 Réponses :
Cela devrait fonctionner bien, bien que je fasse une classe générique. Quelque chose comme ceci serait plus flexible et réutilisable. Exemple d'utilisation: p>
J'espère que cela fonctionne.
Utilisez expandoObject b> pour résoudre votre problème. Définition de expresoObject selon MSDN: p>
Il représente un objet dont les membres peuvent être ajoutés de manière dynamique et supprimés au moment de l'exécution. P>
Pour définir le type de données et la valeur au moment de l'exécution, utilisez Convertir .Changetype b> méthode. Cela crée un objet de même type et de même valeur que vous fournissez. p>
référence pour expandoObject: https: //blogs.msdn.microsoft.com/CSHARPFAQ/2009/09/30/DYNAMIC-IN-C-4-0-Introducing-the-expandoObject/ P>
référence pour convert.Changetype : https://msdn.microsoft. com / fr-nous / bibliothèque / system.convert.changetype (v = vs.110) .aspx p>
Ainsi créer des propriétés de manière dynamique à l'aide d'expansoObject et créez du type de données de manière dynamique à l'aide de convert.ChangeType. p>
code: p>
Définir un dictionnaire: puis écrivez une méthode comme celle-ci: p> et appelez-le, comme ça: P > ou même (pas vraiment réutilisable): p> avec: p>
Vous pouvez également initialiser la valeur car elle devrait être émise dans les résultats. IE: "0" pour INT, @ "" "Texte" "" pour le texte et ainsi de suite. Le compilateur détectera toutes les erreurs de conversion lors de la compilation du code C # généré.
La chose est que l'ensemble entrant de champs, que j'utilise pour définir des variables changera souvent, donc je ne veux pas voir des erreurs de compilation.