2009-04-09 8 views
-1

Je veux générer du code pour créer un objet de table de hachage et l'affecter avec une clé et une valeur programmatique. il devrait être similaire àgénération de code par programme en C# using codedom

Hashtable ht = new Hashtable(); 

ht.Add("key1", "value1"); 
ht.Add("key2", "value2"); 
ht.Add("key3", "value3"); 

pour par exemple

CodeMemberMethod testMethod = new CodeMemberMethod(); 

     testMethod.Name = "Test" + mi.Name + "_" + intTestCaseCnt; 
     testMethod.Attributes = MemberAttributes.Public;..... 

ici, il crée une méthode programacticaly maintenant je veux créer un Hashtable donc je vous demande comment?

+0

je pourrais être un peu lent, mais je ne sais pas ce que vous demandez. Pouvez-vous reformuler ou donner un contexte? – uriDium

+0

Pouvez-vous être plus précis s'il vous plaît? Comme, quelles sont vos entrées (base de données, fichier)? Est-ce une opération en un coup pour générer un morceau de code? –

+0

@uriDium, j'espère que vous n'êtes pas lent, mais si vous êtes, vous n'êtes pas seul ... – ybo

Répondre

1
CodeParameterDeclarationExpression hashTableParam =new CodeParameterDeclarationExpression(); 
hashTableParam.Name = "hastable"; 

hashTableParam.Type = new CodeTypeReference(typeof(System.Collections.Hashtable)); 

ce que je cherchais grâce ur les efforts

+0

Vous pouvez également sélectionner this comme réponse acceptée – Quibblesome

5

Pour la génération de code considèrent la Text Template Transformation Toolkit (T4)

Ce modèle ...

Hashtable ht = new Hashtable(); 
<# 
    foreach (var obj in DataSource) 
    { 
#> 
ht.Add("<#= obj.Key #>", "<#= obj.Value #>"); 
<# 
    } 
#> 

... générerait cette sortie ...

Hashtable ht = new Hashtable(); 
ht.Add("key1", "value1"); 
ht.Add("key2", "value2"); 
ht.Add("key3", "value3"); 
... 
ht.Add("keyN", "valueN"); 

où N est le nombre d'enregistrements dans votre DataSource.

La meilleure chose est, cela est intégré à Visual Studio 2008

J'ai eu de bonnes expériences avec elle

+0

ne veux pas l'outil entier juste un morceau de code dans le code dom – Arunachalam

+0

Désolé si j'ai mal compris votre question initiale claire-comme-boue. L'Edit n'est pas beaucoup mieux non plus. J'abandonne. –

+0

Excuses, j'ai raté la partie cruciale de l'édition - "using codedom". Dommage que ce n'était pas là depuis le début et j'aurais pu gagner du temps. –

0

Les deux générateurs de code que je connais sont ...

CodeSmith à ... main site, avec un free version

T4 qui est Scott Hanselman a un billet de blog à ce sujet here

1

Où êtes-vous bloqués? Vous savez comment créer un CodeMemberMethod, vous devriez donc pouvoir ajouter des objets d'instruction à la collection CodeMemberMethod.Statements. Vous aurez besoin d'une instruction pour la déclaration de variable, une pour l'affectation/l'initialisation et une pour chaque "Ajouter" -Call. BTW: J'ai déjà utilisé le code DOM par le passé, mais j'ai trouvé que générer du code directement avec un moteur de templates est moins efficace et rend le code beaucoup plus lisible. J'utilise habituellement StringTemplate, et j'en suis très content.

Questions connexes