7
votes

Comment initialiser diverses variables de type dans le code C # généré dynamiquement?

J'ai un modèle T4 où je voudrais générer un fichier .cs.

J'ai un tableau de système.data.datacolumn que j'aimerais utiliser comme variables privées dans mon fichier de code généré.

J'utilise colleName comme nom de variable, valeur comme valeur variable et DataType comme type de données variable.

Je pense à comment puis-je initialiser les variables définies dans ce cas: xxx

J'aimerais voir la sortie: Système privé.string col1 = "texte";

Définition variable dans template T4: xxx

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: xxx

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?


2 commentaires

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.


3 Réponses :


3
votes

Cela devrait fonctionner bien, bien que je fasse une classe générique. Quelque chose comme xxx

ceci serait plus flexible et réutilisable. Exemple d'utilisation: xxx


0 commentaires

1
votes

J'espère que cela fonctionne.

Utilisez expandoObject pour résoudre votre problème. Définition de expresoObject selon MSDN:

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.

Pour définir le type de données et la valeur au moment de l'exécution, utilisez Convertir .Changetype méthode. Cela crée un objet de même type et de même valeur que vous fournissez.

référence pour expandoObject: https: //blogs.msdn.microsoft.com/CSHARPFAQ/2009/09/30/DYNAMIC-IN-C-4-0-Introducing-the-expandoObject/

référence pour convert.Changetype : https://msdn.microsoft. com / fr-nous / bibliothèque / system.convert.changetype (v = vs.110) .aspx

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.

code: xxx


0 commentaires

1
votes

Définir un dictionnaire: xxx

puis écrivez une méthode comme celle-ci: xxx

et appelez-le, comme ça: xxx

ou même (pas vraiment réutilisable): xxx

avec: xxx < / p>


0 commentaires