2009-10-06 8 views
0

chaîne typeName = Request.QueryString ["TypeName"]; Type t = Type.GetType (typeName); t.GetField ("SomeField"). SetValue (?, "Bonjour");Comment définir une valeur d'un champ de type dynamique

Dans le code ci-dessus, je crée un objet Type qui contient les informations d'un type personnalisé dont le nom provient de QueryString.

Maintenant le problème est que ce type personnalisé a SomeField et je veux assigner la valeur à ce champ mais je n'ai aucune idée quel type peut provenir de QueryString ainsi je ne peux pas dire n'importe quel type spécifique au ? place dans la méthode SetValue.

Que dois-je faire?

Merci d'avance.

Répondre

4

Ceci est très probablement la mauvaise façon de faire quelque chose. Si vous pouviez donner un exemple plus concret de ce que vous essayez d'accomplir, nous pourrions peut-être vous donner d'autres moyens de le faire. Ceci étant dit, vous n'avez pas d'instance de TypeName, donc vous ne pouvez évidemment rien avoir à la place du "?". Vous pouvez cependant utiliser System.Activator pour créer une nouvelle instance de TypeName.

Exemple:

string typeName = Request.QueryString["TypeName"]; 
Type t = Type.GetType(typeName); 
object instance = Activator.CreateInstance(t); 
t.GetField("SomeField").SetValue(instance, "Hello"); 
+0

type ne peut pas créer une instance ou quelque chose à accomplir? – Tarik

+2

System.Activator est ce que vous utilisez pour créer une instance. – Jimmy

+0

Merci, à part cette solution, y a-t-il une autre solution que vous connaissez et que vous me suggérez? – Tarik

Questions connexes