2014-06-25 2 views
2

Fondamentalement, je suis en train de convertir:Comment convertir une liste de paires de valeurs clés à un objet dynamique

keys[3] = {"id", "name", "comment"} 
values[3] = {"1", "Ackerman", "superuser"} 

à:

new { id: "1", name: "Ackerman", comment: "superuser"} 

Comment puis-je faire cela?

+1

C'est pas un "objet dynamique"; c'est un "type anonyme". Lequel voulez-vous dire? –

+0

@MarcGravell En fait, soit bien. Je ne veux pas et ne peux pas explicitement définir la classe à l'avance, car la liste est créée dynamiquement. – hurtchin

+0

k; maintenant - qu'est-ce que 'keys' et' values' ici? parce que ce n'est pas évident. Ce n'est pas une syntaxe C# valide ... sont-ils des tableaux? si oui, quoi: 'string [] [] keys' et' object [] [] values'? –

Répondre

2

Je pense wat que vous voulez est un objet Expando qui permet d'ajouter des propriétés dinamically:

keys[3] = {"id", "name", "comment"} 
values[3] = {1, "Ackerman", "superuser"} 

dynamic item = new ExpandoObject(); 
var dItem = item as IDictionary<String, object>; 

for(int buc = 0; buc < keys.Length; buc++) 
    dItem.Add(keys[buc], values[buc]); 

Après cela, vous pouvez appeler votre objet comme vous le faites avec tout autre:

var id = item.id; 
var comment = item.comment; 
item.name = "new name"; 
Questions connexes