2011-05-19 2 views
0

J'ai créé un class student et dans cette classe contact l'objet est créé (agrégation). Je récupère tous les objets stockés dans le tableau "object".coulée de type dynamique d'objets en C# .net

Si je veux accéder student attribut je dois taper le lancer avec student et si je veux accéder contact attribut soit je dois donner le chemin complet (student_object.contact_object.attribute_name) ou tapez simplement coulé avec contact et obtenir la valeur d'attribut.

Je suis resté fidèle à deux endroits:

  1. Si j'accepte le nom de classe d'un utilisateur et que vous souhaitez accéder la valeur. Comment puis je faire ça? Comment transtyper type avec variable de zone de texte.
  2. Si le nom du champ J'accepte de l'utilisateur dans la zone de texte. Comment puis-je accéder à la valeur en utilisant la zone de texte variable?

Jon, En fait, j'ai créé une base de données orientée objet en C# .NET. où les classes ci-dessus sont là. Je récupère tous les objets dans le tableau Object. L'étudiant a le nom et l'âge du champ, alors que le contact a mobileID. Maintenant, je crée une requête via des zones de texte. Si l'utilisateur veut voir le nom de tout l'objet, alors le nom var2 qu'il mettra. mais je ne suis pas en mesure d'obtenir ce message messageBox.show (o0 as Student) .var2); Idem si au lieu de Student si je donne var1 messageBox.show (o0 as var1) .var2); Puis-je faire ceci? merci/Bharti

Répondre

1

Le moulage est important pour compile-time informations. Cela exclut tout ce que l'utilisateur fournit à le temps d'exécution.

On dirait que vous avez vraiment besoin juste réflexion:

PropertyInfo property = value.GetType().GetProperty(propertyName); 
// Insert validation here... 
object propertyValue = property.GetValue(value, null); 

Vous aurez besoin d'être plus intelligent si vous voulez que l'utilisateur soit en mesure d'évaluer un chemin des propriétés telles que Address.ZipCode mais il devrait vous donner un point de départ.

+0

pourriez-vous élaborer que je ne comprends pas. –

+0

@Bharti: Je vous ai donné un exemple de code ... l'avez-vous essayé? Regardez les documents pour 'Type.GetProperty' pour plus d'informations. –

+0

Je vais écrire mon code. –