2010-11-29 4 views
2

En C# Compte tenu d'une table de hachage comme {id: '1', le nom: 'foo'}Création d'un objet à partir d'une table de hachage C#

Comment puis-je créer dynamiquement une instance d'une classe qui a le même membres? Je sais que je vais rencontrer des problèmes de casting mais je traiterai de ces problèmes plus tard. À l'heure actuelle, je ne peux même pas accéder aux membres de la classe en fonction de la clé de la table de hachage. Est-ce que je vais à ce sujet de la bonne façon?

C'est ainsi que je m'y prends actuellement.

product p = new product(); 
Type description = typeof(product); 
foreach (DictionaryEntry d in productHash) 
{ 
    MemberInfo[] info = description.GetMember((string)d.Key); 
    //how do I access the member of p based on the memberInfo I have? 
    //p.<?> = d.Value; 
} 

Merci

+1

Désolé, répondu ici http://stackoverflow.com/questions/721441/c-how-to-iterate-through-classes-fields-and-set-properties Mon mauvais – Tavis

+0

Glad qui a répondu à votre question. Je pensais que vous vouliez créer la classe Product dynamiquement, pas seulement la remplir. La réflexion est la voie à suivre. – kenny

Répondre

2

d'abord, vous devez accéder au membre en tant que propriété. Ensuite, vous pouvez demander à la propriété pour la valeur d'une instance particulière:

PropertyInfo property = description.GetProperty((string) d.Key); 

object value = property.GetValue(p, null); 

Le second paramètre est l'indice, qui prendra effet que si la propriété est un indexer.

Questions connexes