2009-05-26 7 views
1

Possible en double:
Property Name and need its valueFacile un? Accédez à la propriété d'un objet en utilisant une variable en C#

Salut,

Celui-ci devrait être facile pour la plupart des gens. Je voudrais accéder à une variable normale dans un objet (disons un exemple) en utilisant une valeur de variable. Par exemple: J'ai un tableau avec une liste de noms de variables et je veux obtenir l'information de l'objet en les utilisant. Il est évident que cela est faux:

string[] variable_names = new string[] {"name", "surname"}; 
myObject.variable_names[0] = 1; 
myObject.variable_names[1] = 1; 

Dans d'autres langues (non C#) J'utilise:

myObject[variable_names[0]] = 1; 

Je sais que l'exemple stupide semble, mais il était juste une façon de l'expliquer.

Merci à l'avance :)

+3

Si je comprends bien, vous voulez accéder à une propriété, où le nom de la propriété est détenue par une variable chaîne. Si oui, cela pourrait contenir votre réponse: http://stackoverflow.com/questions/798567/property-name-and-need-its-value/ –

+0

Merci, votre commentaire devrait être la bonne réponse :) – ozke

Répondre

6

Pour ce faire, vous devez utiliser Reflection. En supposant que ce que vous voulez accéder est une propriété de monObjet:

var type = myVariable.GetType(); 
var property = type.GetProperty("name"); 
property.SetValue(myVariable, 1, new object[] {}); 
2

C# est typer, cela signifie que le compilateur vérifie si les propriétés existent. Il n'est donc pas aussi facile d'accéder dynamiquement aux propriétés par leur nom. Vous devez utiliser la réflexion pour cela. Au lieu d'expliquer comment cela fonctionne (je suis sûr que d'autres le feront), je recommande d'utiliser une interface ou un autre moyen de fournir le typage fort, chaque fois que vous le pouvez. C# n'est pas un langage de script et ne devrait pas être utilisé comme tel.

Questions connexes