L'obtention de référence à l'instance de la Classe par le nom de la chaîne - VB.NET
Est-il possible en utilisant la Réflexion ou une autre méthode pour obtenir une référence à une instance de la classe spécifique à partir du nom de l'instance de classe?
Par exemple le framework pour les applications que je développe fortement utilise les instances de classe tels que:
Public bMyreference comme MyReference = new MyReference
Puis tout au long de l'application bMyReference est utilisé par des contrôles personnalisés et code.
Une des propriétés de contrôles personnalisés est la "FieldName" qui fait référence à une Propriété dans ces instances de classe (bMyReference.MyField) comme une chaîne de caractères.
Ce que je voudrais être en mesure de faire est d'analyser cette chaîne "bMyReference.MyField" et ensuite de se référer à l'Instance réelle de la Propriété.
En VB6 je voudrais utiliser un EVAL ou quelque chose de similaires pour convertir la chaîne de caractères à un objet réel, mais de toute évidence, cela ne fonctionne pas dans VB.net
Ce que je nous vois est quelque chose comme cela
Dim FieldName as String = MyControl.FieldName ' sets FielName to bMyReference.MyField
Dim FieldObject() as String = FieldName.Split(".") ' Split into the Object /Property
Dim myInstance as Object = ......... ' Obtain a reference to the Instance and set as myInstance
Dim myProperty = myInstance.GetType().GetProperty(FieldObject(1))
Une instance de la classe spécifique, ou une instance d'un type spécifique? Ce sont des choses différentes. Peut-être VB6 est vissage jusqu'à votre idée de OO classes et de propriétés.
OriginalL'auteur | 2010-03-12
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si Ive a entendu de vous bien, mais ma réponse est oui, vous pouvez le faire par la réflexion. Vous aurez besoin d'importer
System.Reflection
espace de noms.Voici un exemple:
Une fois que vous avez MyProperty, uou pouvez obtenir la valeur de votre propriété, juste comme ça:
De passer à la méthode de la instace de ce que vous souhaitez connaître la valeur.
Me dire si cela résout votre question, s'il vous plaît 🙂
MODIFIER
Ce serait ClassA.vb
OriginalL'auteur Javier